from app.backend.db.database import Base
from sqlalchemy import Column, Integer, BigInteger, String, DateTime, Date, Time, ForeignKey, Float, Boolean, Text, Numeric, Enum, UniqueConstraint, select
from sqlalchemy.orm import column_property
from datetime import datetime

class PedagogicalEvaluationClassroomFirstGradeModel(Base):
    """Document 31 – Pauta de evaluación pedagógica - Docente de aula - 1º Básico (first grade). Columnas normalizadas."""
    __tablename__ = 'pedagogical_evaluation_classroom_first_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)  # Varios valores separados por coma: en_desarrollo, silabica, etc.
    comprehension_level = Column(String(255), nullable=True)  # Varios valores separados por coma
    writing_level = Column(String(255), nullable=True)  # Varios valores separados por coma
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomSecondGradeModel(Base):
    """Document 32 – Pauta de evaluación pedagógica - Docente de aula - 2º Básico (second grade). 15 language, 12 math."""
    __tablename__ = 'pedagogical_evaluation_classroom_second_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomThirdGradeModel(Base):
    """Document 33 – Pauta de evaluación pedagógica - Docente de aula - 3º Básico (third grade). 15 language, 12 math."""
    __tablename__ = 'pedagogical_evaluation_classroom_third_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomFourthGradeModel(Base):
    """Document 34 - Pauta de evaluacion pedagogica - Docente de aula - 4to Basico (fourth grade). 17 language, 17 math."""
    __tablename__ = 'pedagogical_evaluation_classroom_fourth_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    language_16 = Column(String(10), nullable=True)
    language_17 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    mathematics_14 = Column(String(10), nullable=True)
    mathematics_15 = Column(String(10), nullable=True)
    mathematics_16 = Column(String(10), nullable=True)
    mathematics_17 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomFifthGradeModel(Base):
    """Document 35 - Pauta de evaluacion pedagogica - Docente de aula - 5to Basico (fifth grade)."""
    __tablename__ = 'pedagogical_evaluation_classroom_fifth_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    language_16 = Column(String(10), nullable=True)
    language_17 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    mathematics_14 = Column(String(10), nullable=True)
    mathematics_15 = Column(String(10), nullable=True)
    mathematics_16 = Column(String(10), nullable=True)
    mathematics_17 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomSixthGradeModel(Base):
    """Document 36 - Pauta de evaluacion pedagogica - Docente de aula - 6to Basico (sixth grade). 13 actitud, 11 lenguaje, 13 matemática."""
    __tablename__ = 'pedagogical_evaluation_classroom_sixth_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    language_16 = Column(String(10), nullable=True)
    language_17 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    mathematics_14 = Column(String(10), nullable=True)
    mathematics_15 = Column(String(10), nullable=True)
    mathematics_16 = Column(String(10), nullable=True)
    mathematics_17 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomSeventhGradeModel(Base):
    """Document 37 - Pauta de evaluacion pedagogica - Docente de aula - 7mo Basico (seventh grade). 13 actitud, 11 lenguaje, 13 matemática."""
    __tablename__ = 'pedagogical_evaluation_classroom_seventh_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    language_16 = Column(String(10), nullable=True)
    language_17 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    mathematics_14 = Column(String(10), nullable=True)
    mathematics_15 = Column(String(10), nullable=True)
    mathematics_16 = Column(String(10), nullable=True)
    mathematics_17 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomFirstGradeSecondaryModel(Base):
    """Document 39 - Pauta de evaluacion pedagogica - Docente de aula - 1ero Medio. 13 actitud, 13 lengua, 8 matematica."""
    __tablename__ = 'pedagogical_evaluation_classroom_first_grade_secondary'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    language_16 = Column(String(10), nullable=True)
    language_17 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    mathematics_14 = Column(String(10), nullable=True)
    mathematics_15 = Column(String(10), nullable=True)
    mathematics_16 = Column(String(10), nullable=True)
    mathematics_17 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomEighthGradeModel(Base):
    """Document 38 - Pauta de evaluacion pedagogica - Docente de aula - 8vo Basico. Misma estructura que first_grade_secondary."""
    __tablename__ = 'pedagogical_evaluation_classroom_eighth_grade'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    language_16 = Column(String(10), nullable=True)
    language_17 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    mathematics_14 = Column(String(10), nullable=True)
    mathematics_15 = Column(String(10), nullable=True)
    mathematics_16 = Column(String(10), nullable=True)
    mathematics_17 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

class PedagogicalEvaluationClassroomSecondGradeSecondaryModel(Base):
    """Document 40 - Pauta de evaluacion pedagogica - Docente de aula - 2do Medio. 13 actitud, 12 lengua, 6 matemática."""
    __tablename__ = 'pedagogical_evaluation_classroom_second_grade_secondary'
    id = Column(Integer, primary_key=True, autoincrement=True)
    student_id = Column(Integer, nullable=False)
    document_type_id = Column(Integer, nullable=True)
    student_full_name = Column(String(255), nullable=True)
    student_identification_number = Column(String(50), nullable=True)
    student_born_date = Column(Date, nullable=True)
    student_age = Column(String(50), nullable=True)
    establishment_id = Column(String(255), nullable=True)
    course = Column(String(255), nullable=True)
    report_date = Column(Date, nullable=True)
    repetitions = Column(String(255), nullable=True)
    professional_id = Column(Integer, nullable=True)
    report_type = Column(String(50), nullable=True)
    school_situation_strengths = Column(Text, nullable=True)
    observations = Column(Text, nullable=True)
    attitude_1 = Column(String(10), nullable=True)
    attitude_2 = Column(String(10), nullable=True)
    attitude_3 = Column(String(10), nullable=True)
    attitude_4 = Column(String(10), nullable=True)
    attitude_5 = Column(String(10), nullable=True)
    attitude_6 = Column(String(10), nullable=True)
    attitude_7 = Column(String(10), nullable=True)
    attitude_8 = Column(String(10), nullable=True)
    attitude_9 = Column(String(10), nullable=True)
    attitude_10 = Column(String(10), nullable=True)
    attitude_11 = Column(String(10), nullable=True)
    attitude_12 = Column(String(10), nullable=True)
    attitude_13 = Column(String(10), nullable=True)
    observations_attitude = Column(Text, nullable=True)
    language_1 = Column(String(10), nullable=True)
    language_2 = Column(String(10), nullable=True)
    language_3 = Column(String(10), nullable=True)
    language_4 = Column(String(10), nullable=True)
    language_5 = Column(String(10), nullable=True)
    language_6 = Column(String(10), nullable=True)
    language_7 = Column(String(10), nullable=True)
    language_8 = Column(String(10), nullable=True)
    language_9 = Column(String(10), nullable=True)
    language_10 = Column(String(10), nullable=True)
    language_11 = Column(String(10), nullable=True)
    language_12 = Column(String(10), nullable=True)
    language_13 = Column(String(10), nullable=True)
    language_14 = Column(String(10), nullable=True)
    language_15 = Column(String(10), nullable=True)
    language_16 = Column(String(10), nullable=True)
    language_17 = Column(String(10), nullable=True)
    observations_language = Column(Text, nullable=True)
    reading_type = Column(String(255), nullable=True)
    comprehension_level = Column(String(255), nullable=True)
    writing_level = Column(String(255), nullable=True)
    mathematics_1 = Column(String(10), nullable=True)
    mathematics_2 = Column(String(10), nullable=True)
    mathematics_3 = Column(String(10), nullable=True)
    mathematics_4 = Column(String(10), nullable=True)
    mathematics_5 = Column(String(10), nullable=True)
    mathematics_6 = Column(String(10), nullable=True)
    mathematics_7 = Column(String(10), nullable=True)
    mathematics_8 = Column(String(10), nullable=True)
    mathematics_9 = Column(String(10), nullable=True)
    mathematics_10 = Column(String(10), nullable=True)
    mathematics_11 = Column(String(10), nullable=True)
    mathematics_12 = Column(String(10), nullable=True)
    mathematics_13 = Column(String(10), nullable=True)
    mathematics_14 = Column(String(10), nullable=True)
    mathematics_15 = Column(String(10), nullable=True)
    mathematics_16 = Column(String(10), nullable=True)
    mathematics_17 = Column(String(10), nullable=True)
    observations_mathematics = Column(Text, nullable=True)

