"""This module was autogenerated from sharepoint list schema.
Please be careful modifying the contents."""

from datetime import datetime
from enum import Enum
from typing import Annotated, Optional

from pydantic import BaseModel, Field, WrapValidator

from aind_metadata_service.sharepoint.utils import optional_enum


class Bctype(str, Enum):
    """Enum class for Bctype"""

    SUBMANDIBULAR = "Submandibular"
    SUBMANDIBULAR_IMMUNOLOGY = "Submandibular - Immunology"
    TERMINAL = "Terminal"


class Doseroute(str, Enum):
    """Enum class for Doseroute"""

    INTRAMUSCULAR_IM = "Intramuscular (IM)"
    INTRAPERITONEAL_IP = "Intraperitoneal (IP)"
    INTRAVENOUS_IV = "Intravenous (IV)"
    ORAL_GAVAGE_PO = "Oral Gavage (PO)"
    SUBCUTANEOUS_SC = "Subcutaneous (SC)"


class Icvlims(str, Enum):
    """Enum class for Icvlims"""

    NEW_STEREOTAXIC_INJECTION = "New Stereotaxic Injections"
    STEREOTAXIC_INJECTIONS = "Stereotaxic Injections"


class Icvroute1(str, Enum):
    """Enum class for Icvroute1"""

    ANY_UNILATERAL = "Any, Unilateral"
    BILATERAL = "Bilateral"
    LEFT_UNILATERAL = "Left, Unilateral"
    RIGHT_UNILATERAL = "Right, Unilateral"


class Icvroute2(str, Enum):
    """Enum class for Icvroute2"""

    ANY_UNILATERAL = "Any, Unilateral"
    BILATERAL = "Bilateral"
    LEFT_UNILATERAL = "Left, Unilateral"
    RIGHT_UNILATERAL = "Right, Unilateral"


class Icvroute3(str, Enum):
    """Enum class for Icvroute3"""

    ANY_UNILATERAL = "Any, Unilateral"
    BILATERAL = "Bilateral"
    LEFT_UNILATERAL = "Left, Unilateral"
    RIGHT_UNILATERAL = "Right, Unilateral"


class Icvroute4(str, Enum):
    """Enum class for Icvroute4"""

    ANY_UNILATERAL = "Any, Unilateral"
    BILATERAL = "Bilateral"
    LEFT_UNILATERAL = "Left, Unilateral"
    RIGHT_UNILATERAL = "Right, Unilateral"


class Icvroute5(str, Enum):
    """Enum class for Icvroute5"""

    ANY_UNILATERAL = "Any, Unilateral"
    BILATERAL = "Bilateral"
    LEFT_UNILATERAL = "Left, Unilateral"
    RIGHT_UNILATERAL = "Right, Unilateral"


class Limsproject(str, Enum):
    """Enum class for Limsproject"""

    AINDDISCOVERY = "aind-discovery"
    AINDEPHYS = "aind-ephys"
    AINDMSMA = "aind-msma"
    AINDOPHYS = "aind-ophys"
    APR_OX = "APROx"
    A_XL_OX = "AXlOx"
    BA_RSEQ_GENETIC_TOOLS = "BARseq_GeneticTools"
    BRAINTV_VIRAL_STRATEGIES = "BraintvViralStrategies"
    BRAIN_STIM = "BrainStim"
    C200 = "C200"
    C600 = "C600"
    C600X = "C600x"
    C600_LATERAL = "C600Lateral"
    CELLTYPES_TRANSGENIC_CHAR = "CelltypesTransgenicCharacterizationGCaMP"
    CITRICACIDPILOT = "Citricacidpilot"
    CON9999 = "CON-9999"
    CONC505 = "CON-C505"
    CONCS04 = "CON-CS04"
    DEEPSCOPE_SLM_DEVELOPMENT = "DeepscopeSLMDevelopment"
    DYNAMIC_ROUTING_BEHAVIOR = "DynamicRoutingBehaviorDev"
    DYNAMIC_ROUTING_OPTO_DEV = "DynamicRoutingOptoDev"
    DYNAMIC_ROUTING_SURGICAL = "DynamicRoutingSurgicalDevelopment"
    DYNAMIC_ROUTING_TASK1_PRO = "DynamicRoutingTask1Production"
    DYNAMIC_ROUTING_TASK2_PRO = "DynamicRoutingTask2Production"
    DYNAMIC_ROUTING_ULTRA_OPT = "DynamicRoutingUltraOptotaggingBehavior"
    H120 = "H120"
    H200 = "H200"
    H301 = "H301"
    H301T = "H301t"
    H301_X = "H301X"
    H501_X = "H501X"
    H504 = "H504"
    IS_IX = "ISIx"
    LARGE_SCALE_VOLTAGE = "LargeScaleVoltage"
    LEARNINGM_FISH_DEVELOPMEN = "LearningmFISHDevelopment"
    LEARNINGM_FISH_TASK1_A = "LearningmFISHTask1A"
    M301T = "M301t"
    MESOSCOPE_DEVELOPMENT = "MesoscopeDevelopment"
    MINDSCOPE_TRANSGENIC_CHAR = "MindscopeTransgenicCharacterizationGCaMP"
    MOUSE_BRAIN_CELL_ATLAS_CH = "MouseBrainCellAtlasCharacterizationPilot"
    MOUSE_BRAIN_CELL_ATLAS_TR = "MouseBrainCellAtlasTranssynaptic"
    MOUSE_BRAIN_CELL_ATLA_001 = "MouseBrainCellAtlasCharacterizatlon"
    MOUSE_FULL_MORPHOLOGY_FMO = "MouseFullMorphologyFmost"
    MOUSE_GENETIC_TOOLS_PROJE = "MouseGeneticToolsProjectionMapping"
    MULTISCOPE_SIGNAL_NOISE = "MultiscopeSignalNoise"
    M_FISH_PLATFORM_DEVELOPME = "mFishPlatformDevelopment"
    M_IVSCCMET = "mIVSCC-MET"
    M_IVSCCME_TX = "mIVSCC-METx"
    M_MPATC_HX = "mMPATCHx"
    M_M_PATCHX = "mMPatchx"
    M_VISPTAXLO = "MVisp-taxl.o"
    N200 = "N200"
    N310 = "N310"
    NEUROPIXEL_VISUAL_BEHAVIO = "NeuropixelVisualBehavior"
    NEUROPIXEL_VISUAL_BEH_001 = "NeuropixelVisualBehaviorDevelopment"
    NEUROPIXEL_VISUAL_CODING = "NeuropixelVisualCoding"
    N_0200 = "0200"
    N_0309 = "0309"
    N_0310 = "0310"
    N_0311 = "0311"
    N_0312 = "0312"
    N_0314 = "0314"
    N_0316 = "0316"
    N_0319 = "0319"
    N_0320 = "0320"
    N_0321 = "0321"
    N_03212 = "03212"
    N_03213 = "03213"
    N_03214 = "03214"
    N_0322 = "0322"
    N_0324 = "0324"
    N_0325 = "0325"
    N_0326 = "0326"
    N_0327 = "0327"
    N_03272 = "03272"
    N_0328 = "0328"
    N_0329 = "0329"
    N_0331 = "0331"
    N_0334 = "0334"
    N_03342 = "03342"
    N_0335 = "0335"
    N_0336 = "0336"
    N_0338 = "0338"
    N_0339 = "0339"
    N_03392 = "03392"
    N_0340 = "0340"
    N_0342 = "0342"
    N_03422 = "03422"
    N_0343 = "0343"
    N_0344 = "0344"
    N_0345 = "0345"
    N_0346 = "0346"
    N_0350 = "0350"
    N_0350X = "0350x"
    N_0351 = "0351"
    N_0351X = "0351x"
    N_0354 = "0354"
    N_0355 = "0355"
    N_0357 = "0357"
    N_0358 = "0358"
    N_0359 = "0359"
    N_0360 = "0360"
    N_03602 = "03602"
    N_0362 = "0362"
    N_0363 = "0363"
    N_0364 = "0364"
    N_0365 = "0365"
    N_0365X = "0365x"
    N_0366 = "0366"
    N_0366X = "0366x"
    N_0367 = "0367"
    N_0369 = "0369"
    N_0371 = "0371"
    N_0372 = "0372"
    N_0372X = "0372x"
    N_0374 = "0374"
    N_0376 = "0376"
    N_0376A = "0376a"
    N_0376X = "0376x"
    N_0378 = "0378"
    N_0378X = "0378x"
    N_0380 = "0380"
    N_0384 = "0384"
    N_0386 = "0386"
    N_0388 = "0388"
    OLVSX = "OLVSX"
    OM_FISHRO_BINJECTIONVIRUS = "omFISHROBinjectionviruspilot"
    OM_FISH_CUX2_MESO = "omFISHCux2Meso"
    OM_FISH_GAD2_MESO = "omFISHGad2Meso"
    OM_FISH_GAD2_PILOT = "omFISHGad2Pilot"
    OM_FISH_RBP4_MESO = "omFISHRbp4Meso"
    OM_FISH_RORB_PILOT = "omFISHRorbPilot"
    OM_FISH_SST_MESO = "omFISHSstMeso"
    OM_FISH_VIP_MESO = "omFISHVipMeso"
    OM_FIS_HCOREGISTRATIONPIL = "omFISHcoregistrationpilot"
    OPENSCOPELNJECTION_PILOT = "OpenscopelnjectionPilot"
    OPENSCOPE_DEVELOPMENT = "OpenscopeDevelopment"
    OPENSCOPE_GAMMA_PILOT = "OpenscopeGammaPilot"
    OPENSCOPE_GAMMA_PRODUCTLO = "OpenscopeGammaProductlon"
    OPENSCOPE_MOTION_PLLOT = "OpenscopeMotionPllot"
    OPENSCOPE_MOTION_PRODUCTI = "OpenscopeMotionProduction"
    OPENSCOPE_MULTIPLEX_PILOT = "OpenscopeMultiplexPilot"
    OPENSCOPE_MULTIPLEX_PRODU = "OpenscopeMultiplexProduction"
    OPEN_SCOPE_DENDRITE_COUPL = "OpenScopeDendriteCoupling"
    OPEN_SCOPE_GLOBAL_LOCAL_O = "OpenScopeGlobalLocalOddball"
    OPEN_SCOPE_ILLUSION = "OpenScopeIllusion"
    OPEN_SCOPE_LOOP = "OpenScopeLoop"
    OPEN_SCOPE_PSYCODE = "OpenScopePsycode"
    OPEN_SCOPE_SEQUENCE_LEARN = "OpenScopeSequenceLearning"
    OPEN_SCOPE_TEMPORAL_BARCO = "OpenScopeTemporalBarcode"
    OPEN_SCOPE_TEXTURE = "OpenScopeTexture"
    OPEN_SCOPE_VISION2_HIPPOC = "OpenScopeVision2Hippocampus"
    OPEN_SCOPE_VISMO = "OpenScopeVismo"
    OPH5_X = "OPH5X"
    SLC6_A1_NEUROPIXEL = "SLC6A1Neuropixel"
    SMART_SPIM_GENETIC_TOOLS = "SmartSPIM_GeneticTools"
    SURGERY_X = "SurgeryX"
    T301 = "T301"
    T301T = "T301t"
    T301_X = "T301X"
    T503 = "T503"
    T503_X = "T503X"
    T504 = "T504"
    T504_X = "T504X"
    T600 = "T600"
    T601 = "T601"
    T601_X = "T601X"
    TASK_TRAINED_NETWORKS_MUL = "TaskTrainedNetworksMultiscope"
    TASK_TRAINED_NETWORKS_NEU = "TaskTrainedNetworksNeuropixel"
    TCYTX = "TCYTX"
    TEMPLETON_PSYCHEDELICS = "TempletonPsychedelics"
    TEMPLETON_TTOC = "Templeton TTOC"
    TINY_BLUE_DOT_BEHAVIOR = "TinyBlueDotBehavior"
    U01_BFCT = "U01BFCT"
    VARIABILITY_AIM1 = "VariabilityAim1"
    VARIABILITY_AIM1_PILOT = "VariabilityAim1Pilot"
    VARIABILITY_SPONTANEOUS = "VariabilitySpontaneous"
    VIP_AXONAL_V1_PHASE1 = "VipAxonalV1Phase1"
    VIP_SOMATIC_V1_MESO = "VIPSomaticV1Meso"
    VIP_SOMATIC_V1_PHASE1 = "VipSomaticV1Phase1"
    VIP_SOMATIC_V1_PHASE2 = "VipSomaticV1Phase2"
    VISUAL_BEHAVIOR = "VisualBehavior"
    VISUAL_BEHAVIOR_DEVELOPME = "VisualBehaviorDevelopment"
    VISUAL_BEHAVIOR_MULTISCOP = "VisualBehaviorMultiscope"
    VISUAL_BEHAVIOR_MULTI_001 = "VisualBehaviorMultiscope4areasx2d"
    VISUAL_BEHAVIOR_TASK1_B = "VisualBehaviorTask1B"
    VISUAL_BEHAV_IOR_MULTISCO = "VisualBehavIorMultiscopeTask1G"
    VI_DEEPDLVE_DEEPSCOPE_PIE = "VIDeepdlveDeepscopePiezo"
    VI_DEEP_DIVE_EM_VOLUME = "VIDeepDiveEMVolume"


class Limsworkflow(str, Enum):
    """Enum class for Limsworkflow"""

    CHARACTERIZATION = "Characterization"
    MGT_ANTEROGRADE_PROJECTIO = "MGT Anterograde Projection Mapping"
    N_2P_SERIAL_IMAGING = "2p serial Imaging"
    SCREENING = "Screening"
    T5032_ANTEROGRADE_TARGET = "T503.2 Anterograde Target-Defined"
    T5033_ALZHEIMERS_PLAQUE = "T503.3 Alzheimer's Plaque"
    T5033_CONTROL = "T503.3 control"
    T503_ANTEROGRADE_CREDEFIN = "T503 anterograde Cre-defined SypEGFP"
    T6011_RETINA = "T601.1 Retina"
    T6012A_RETROGRADE_CAV2_CR = "T601.2a Retrograde CAV2-Cre;Ai75"
    T6012B_RETROGRADE_RABIESG = "T601.2b Retrograde Rabies-GFP"
    T6012C_RETROGRADE_FLUOROG = "T601.2c Retrograde Fluorogold"
    T6013A_ANTEROGRADE_CRE_DE = "T601.3a Anterograde Cre-Defined EGFP"
    T6013B_ANTEROGRADE_CRE_DE = "T601.3b Anterograde Cre-Deflned SypEGFP"
    T6014_ANTEROGRADE_TARGET = "T601.4 Anterograde Target Defined"
    T6015_TRANSSYNAPTIC = "T601.5 trans-synaptic"


class Limsworkflow2(str, Enum):
    """Enum class for Limsworkflow2"""

    CHARACTERIZATION = "Characterization"
    MGT_ANTEROGRADE_PROJECTIO = "MGT Anterograde Projection Mapping"
    N_2P_SERIAL_IMAGING = "2p serial Imaging"
    SCREENING = "Screening"
    T5032_ANTEROGRADE_TARGET = "T503.2 Anterograde Target-Defined"
    T5033_ALZHEIMERS_PLAQUE = "T503.3 Alzheimer's Plaque"
    T5033_CONTROL = "T503.3 control"
    T503_ANTEROGRADE_CREDEFIN = "T503 anterograde Cre-defined SypEGFP"
    T6011_RETINA = "T601.1 Retina"
    T6012A_RETROGRADE_CAV2_CR = "T601.2a Retrograde CAV2-Cre;Ai75"
    T6012B_RETROGRADE_RABIESG = "T601.2b Retrograde Rabies-GFP"
    T6012C_RETROGRADE_FLUOROG = "T601.2c Retrograde Fluorogold"
    T6013A_ANTEROGRADE_CRE_DE = "T601.3a Anterograde Cre-Defined EGFP"
    T6013B_ANTEROGRADE_CRE_DE = "T601.3b Anterograde Cre-Deflned SypEGFP"
    T6014_ANTEROGRADE_TARGET = "T601.4 Anterograde Target Defined"
    T6015_TRANSSYNAPTIC = "T601.5 trans-synaptic"


class Postfix(str, Enum):
    """Enum class for Postfix"""

    NUCLEASEFREE_1X_PBS_OM_FI = "Nuclease-free 1xPBS (omFISH)"
    NUCLEASEFREE_30_SUCROSE = "Nuclease-free 30% Sucrose"
    NUCLEASEFREE_30_SUCROSEFO = "Nuclease-free 30% Sucrose(FOIL)"
    N_10_SUCROSE = "10% Sucrose"
    N_10_SUCROSE_TO_30_SUCROS = "10% Sucrose to 30% Sucrose"
    N_1X_PBS = "1xPBS"
    N_1X_PBS_001_AZIDE = "1xPBS+ 0.01%Azide"
    N_1X_PBS_001_AZIDE_5M_L_T = "1xPBS+ 0.01%Azide (5mL tubes)"
    N_1X_PBS_001_AZIDE_FOILWR = "1xPBS+ 0.01%Azide (foil-wrapped tube)"
    N_1X_PBS_FOILWRAPPED_TUBE = "1xPBS (foil-wrapped tube)"
    N_30_SUCROSE = "30% Sucrose"
    N_30_SUCROSE_FOILWRAPPED = "30% Sucrose (foil-wrapped tube)"
    N_4PFA_TO_1X_PBS = "4%PFA to 1xPBS"
    OTHER_SPECIFY_BELOW = "Other (Specify below)"


class Projectid(str, Enum):
    """Enum class for Projectid"""

    AAV_PRODUCTION_1028800410 = "AAV production 102-88-004-10"
    N_1010300110_COSTA_PGA_LA = "101-03-001-10 Costa PGA Lab Research (Direct)"
    N_1020100710_CTY_M_FISH = "102-01-007-10 CTY mFISH"
    N_1020100910_CTY_MORPHOLO = "102-01-009-10 CTY Morphology"
    N_1020101110_CTY_CONNECTO = "102-01-011-10 CTY Connectome EM"
    N_1020101210_CTY_CONNECTO = "102-01-012-10 CTY Connectome Meso"
    N_1020101610_CTY_TAXONOMY = "102-01-016-10 CTY Taxonomy"
    N_1020102720_CTY_BRAIN_AX = "102-01-027-20 CTY BRAIN Axonal Connectomics"
    N_1020102920_CTY_BRAIN_CE = (
        "102-01-029-20 CTY BRAIN Cell-type Specific Enhancer Viruses"
    )
    N_1020103120_W4_CTY_EU_HO = (
        "102-01-031-20 W4 - CTY EU Horizon 2020 BRAINTIME"
    )
    N_1020103120_W5_CTY_EU_HO = (
        "102-01-031-20 W5 - CTY EU Horizon 2020 BRAINTIME"
    )
    N_1020103220_CTY_MOUSE_AG = "102-01-032-20 CTY Mouse Aging"
    N_1020103620_CTY_DISSEMIN = (
        "102-01-036-20 CTY Dissemination of 3-Photon Imaging"
    )
    N_1020104020_CTY_BRAIN_UG = (
        "102-01-040-20 CTY BRAIN UG3/UH3 Genetic Viral Tools"
    )
    N_1020104320_CTY_OPTICAL = "102-01-043-20 CTY Optical interrogation"
    N_1020104410_CTY_GENOMICS = "102-01-044-10 – CTY Genomics"
    N_1020104510_CTY_IVSCC = "102-01-045-10 – CTY IVSCC"
    N_1020104620_CTY_WEILL_NE = (
        "102-01-046-20 - CTY Weill Neuronal Heterogeneity"
    )
    N_1020104810_CTY_BARCODED = "102-01-048-10 CTY Barcoded Connectomics"
    N_1020104920_CTY_OPIOID_T = "102-01-049-20 - CTY Opioid Transcriptomics"
    N_1020105520_CTY_EM_MOTOR = "102-01-055-20 CTY EM Motor Cortex"
    N_1020105720_CTY_BRAIN_BG = "102-01-057-20 CTY BRAIN BG AAV Toolbox"
    N_1020105920_CTY_SCORCH = "102-01-059-20 CTY SCORCH"
    N_1020106020_CTY_BRAIN_DR = "102-01-060-20 CTY Brain Drain"
    N_1020106120_CTY_BICAN_HU = "102-01-061-20 CTY BICAN Human and NHP Atlas"
    N_1020106220_CTY_BICAN_MO = (
        "102-01-062-20 CTY BICAN Mouse Developmental Atlas"
    )
    N_1020106410_CTY_GENETIC = "102-01-064-10 CTY Genetic Tools"
    N_1020106620_CTY_CONNECTS = "102-01-066-20 CTY CONNECTS HIVE"
    N_1020106820_CTY_CONNECTS = "102-01-068-20 CTY CONNECTS Patchlink"
    N_1020106920_PRE_SPEND = "102-01-069-20 Pre-Spend"
    N_1020107020_CTY_CONNECTS = "102-01-070-20 CTY CONNECTS MouseConnects"
    N_1020199910_CTY_PROGRAM = "102-01-999-10 CTY Program Admin"
    N_1020200410_BTV_VISUAL_B = "102-02-004-10 BTV Visual Behavior"
    N_1020201220_BTV_BRAIN_VI = "102-02-012-20 BTV BRAIN Viral Strategies"
    N_1020201620_MSP_BRAIN_MO = (
        "102-02-016-20 MSP BRAIN Models and methods for Ca Imaging"
    )
    N_1020201720_BTV_BRAIN_NE = "102-02-017-20 BTV BRAIN Neuropixels ULTRA"
    N_1020400410_OTH_MERITORI = (
        "102-04-004-10 OTH Meritorious Scholar Directed Research"
    )
    N_1020400620_OTH_MEASURIN = (
        "102-04-006-20 OTH Measuring Consciousness Ph2 (TBD)"
    )
    N_1020400710_APLD_TARGETE = "102-04-007-10 APLD Targeted CNS Gene Therapy"
    N_1020401010_CTY_SR_SLC6 = "102-04-010-10 CTY SR: SLC6A1"
    N_1020401110_CTY_SR_SYNGA = "102-04-011-10 CTY SR: SYNGAP1"
    N_1020401210_CTY_SR_FRIED = "102-04-012-10 : CTY SR: Friedreich Ataxia"
    N_1020401410_CTY_PARKINSO = "102-04-014-10 CTY Parkinsons Disease"
    N_1028800310_ANIMAL_CARE = "102-88-003-10 Animal Care Team"
    N_1028800510_TRANSGENIC_C = "102-88-005-10 Transgenic Colony Management"
    N_1028800810_LAB_ANIMAL_S = "102-88-008-10 Lab Animal Services"
    N_1060100110_IMMUNOLOGY_D = "106-01-001-10 Immunology (Direct)"
    N_1210101620_MSP_BRAIN_OP = "121-01-016-20 MSP BRAIN OpenScope"
    N_1210101820_MSP_EPHAPTIC = "121-01-018-20 MSP Ephaptic Cell Typ"
    N_1210102320_MSP_TEMPLETO = (
        "121-01-023-20 MSP Templeton - Testing Theories of Consciousness"
    )
    N_1210102520_MSP_U01_BRID = (
        "121-01-025-20 MSP U01 Bridging Function, Connectivity, &"
        " Transcriptomics"
    )
    N_1210102620_MSP_TEMPLETO = (
        "121-01-026-20 MSP Templeton Measuring Distinct Conscious State"
    )
    N_1220100110_AIND_SCIENTI = "122-01-001-10 AIND Scientific Activities"
    N_1220100220_MOLECULAR_CO = "122-01-002-20 Molecular Core"
    N_1220100220_PROJECT_1 = "122-01-002-20 Project 1"
    N_1220100220_PROJECT_2 = "122-01-002-20 Project 2"
    N_1220100220_PROJECT_4 = "122-01-002-20 Project 4"
    N_1220100420_AIND_BRAINST = "122-01-004-20 AIND Brainstem RF1"
    N_1220101020_AIND_POO_SIM = "122-01-010-20 - AIND Poo Simons BTI"
    N_1220101120_AIND_COHEN_J = (
        "122-01-011-20 - AIND Cohen JHU R01 Transferred Subaward"
    )
    N_1220101220_AIND_RF1_FUN = (
        "122-01-012-20 - AIND RF1 Functions of locus coeruleus"
    )
    N_1220101310_MSP_SCIENTIF = "122-01-013-10 MSP Scientific Activities"
    N_1220101420_AIND_SIEGLE = "122-01-014-20 - AIND Siegle U01 NPOpto"
    N_1220101920_AIND_CZI_COL = "122-01-019-20 AIND CZI Collaborative Pairs"
    N_1220102020_AIBS_COHEN_B = "122-01-020-20 AIBS Cohen BICAN R01"
    N_1220102020_AIND_COHEN_B = "122-01-020-20 AIND Cohen BICAN R01"
    N_1229999910_NEURAL_DYNAM = "122-99-999-10 Neural Dynamics Admin (Direct)"
    N_1250100110_SEA_HUB_SCIE = (
        "125-01-001-10 - SeaHub Scientific Activities (Direct)"
    )
    RD_1028800410 = "R&D 102-88-004-10"


class Protocol(str, Enum):
    """Enum class for Protocol"""

    N_2103_OPTICAL_PHYSIOLOGY = "2103 - Optical Physiology Mindscope Phase 4"
    N_2104_ELECTROPHYSIOLOGY = "2104 - Electrophysiology Mindscope Phase 4"
    N_2105_CHARACTERIZATION_O = (
        "2105 - Characterization of mouse genetic tools"
    )
    N_2106_ANALYSIS_OF_INTEGR = (
        "2106 - Analysis of Integrated Neuronal Phenotypes"
    )
    N_2107_CIRCUIT_TRACING_AN = (
        "2107 - Circuit tracing and optical physiology of mouse cortex"
    )
    N_2109_ANALYSIS_OF_BRAIN = (
        "2109 - Analysis of brain - wide neural circuits in the mouse"
    )
    N_2110_SPECIFICITY_AND_ST = (
        "2110 - Specificity and Strength of Synaptic Signaling Within"
        " and Between Brain Areas"
    )
    N_2112_CHARACTERIZATION_O = (
        "2112 - Characterization of the cell - type - specific molecular"
        " adaptations that occur during opioid use"
    )
    N_2113_IN_VITRO_SINGLE_CE = "2113 - In Vitro Single Cell Characterization"
    N_2114_CHARACTERIZATION_O = (
        "2114 - Characterization of transcriptomic cell types"
        " and molecular adaptations that occur during psychedelic drug use"
    )
    N_2115_OPTICAL_PHYSIOLOGY = (
        "2115 - Optical Physiology of Mouse Brain Circuits"
    )
    N_2116_MOUSE_BREEDING = "2116 - Mouse Breeding"
    N_2117_OPEN_SCOPE_MINDSCO = (
        "2117 - OpenScope Mindscope animal protocol for"
        " Optical Physiology and Neuropixel"
    )
    N_2118_ANIMAL_HOLDING_AND = "2118 - Animal Holding and Procedures"
    N_2119_TRAINING_AND_QUALI = (
        "2119 - Training and qualification of animal users"
    )
    N_2120_ANALYSIS_OF_GENE_E = (
        "2120 - Analysis of Gene Expression - Function and"
        " Structure in the Mouse Brain"
    )
    N_2201_INTERROGATING_PROJ = (
        "2201 - Interrogating projections and gene expression"
        " of neurons by in situ sequencing"
    )
    N_2202_TESTING_AA_VS_IN_P = (
        "2202 - Testing AAVs in Parkinson's mouse models"
    )
    N_2204_PRIMARY_NEURON_AND = (
        "2204 - Primary neuron and brain slice culture from"
        " postnatal rodent brain"
    )
    N_2205_OPTIMIZATION_AND_V = (
        "2205 - Optimization and validation of viral vectors"
    )
    N_2207_IN_VITRO_BRAIN_STI = "2207 - In Vitro Brain Stimulation"
    N_2212_INVESTIGATING_BRAI = "2212 - Investigating Brain States"
    N_2301_TESTING_OF_ENHANCE = (
        "2301 - Testing of enhancers and AAV gene therapy vectors"
    )
    N_2304_NEUROSURGERY_BEHAV = (
        "2304 - Neurosurgery & Behavior Training Protocol"
    )
    N_2305_IN_VIVO_BRAIN_STIM = "2305 - In Vivo Brain Stimulation"
    N_2306_PATCHSEQ_CHARACTER = (
        "2306 - Patch-seq characterization of mouse neurons in acute"
        " brain slices for cross-species comparison studies"
    )
    N_2307_DISSECTING_THE_NEU = (
        "2307 - Dissecting the neural circuits of adaptive control of behavior"
    )
    N_2308_INDUCTION_OF_IMMUN = "2308 - Induction of Immune Memory"
    N_2401_THE_USE_OF_MICE_FO = (
        "2401 - The use of mice for the development of biological recorders"
    )
    N_2402_BRAIN_OBSERVATORY = "2402 - Brain Observatory Optical Physiology"
    N_2405_ANALYSIS_OF_INTEGR = (
        "2405 - Analysis of Integrated Neuronal Phenotypes"
    )
    # Adding these manually because they were not generated correctly
    N_2406_CHARACTERIZATION_OF_MOUS = (
        "2406 - Characterization of mouse and viral genetic tools"
    )
    N_2412_CIRCUIT_TRACING_AND_OPT = (
        "2412 - Circuit tracing and optical physiology of mouse cortex"
    )


class Reqpro1(str, Enum):
    """Enum class for Reqpro1"""

    BLOOD_COLLECTION = "Blood Collection"
    CEREBROSPINAL_FLUID_COLLE = "Cerebrospinal Fluid Collection (CSF)"
    DOSING = "Dosing"
    INDUCTION = "Induction"
    INTRACEREBROVENTRICULAR_I = "Intracerebroventricular Injection"
    OTHER = "Other"
    RETRO_ORBITAL_INJECTION = "Retro-Orbital Injection"
    TISSUE_COLLECTION = "Tissue Collection"


class Reqpro2(str, Enum):
    """Enum class for Reqpro2"""

    BLOOD_COLLECTION = "Blood Collection"
    CEREBROSPINAL_FLUID_COLLE = "Cerebrospinal Fluid Collection (CSF)"
    DOSING = "Dosing"
    INDUCTION = "Induction"
    INTRACEREBROVENTRICULAR_I = "Intracerebroventricular Injection"
    OTHER = "Other"
    RETRO_ORBITAL_INJECTION = "Retro-Orbital Injection"
    TISSUE_COLLECTION = "Tissue Collection"


class Reqpro3(str, Enum):
    """Enum class for Reqpro3"""

    BLOOD_COLLECTION = "Blood Collection"
    CEREBROSPINAL_FLUID_COLLE = "Cerebrospinal Fluid Collection (CSF)"
    DOSING = "Dosing"
    INDUCTION = "Induction"
    INTRACEREBROVENTRICULAR_I = "Intracerebroventricular Injection"
    OTHER = "Other"
    RETRO_ORBITAL_INJECTION = "Retro-Orbital Injection"
    TISSUE_COLLECTION = "Tissue Collection"


class Requeststatus2(str, Enum):
    """Enum class for Requeststatus2"""

    CANCELLED = "Cancelled"
    COMPLETE = "Complete"
    IN_PROGRESS = "In Progress"
    NEW = "New"


class Roeye1(str, Enum):
    """Enum class for Roeye1"""

    BEHIND_EITHER = "Behind Either"
    BEHIND_LEFT = "Behind Left"
    BEHIND_RIGHT = "Behind Right"


class Roeye2(str, Enum):
    """Enum class for Roeye2"""

    BEHIND_EITHER = "Behind Either"
    BEHIND_LEFT = "Behind Left"
    BEHIND_RIGHT = "Behind Right"


class Roeye3(str, Enum):
    """Enum class for Roeye3"""

    BEHIND_EITHER = "Behind Either"
    BEHIND_LEFT = "Behind Left"
    BEHIND_RIGHT = "Behind Right"


class Roeye4(str, Enum):
    """Enum class for Roeye4"""

    BEHIND_EITHER = "Behind Either"
    BEHIND_LEFT = "Behind Left"
    BEHIND_RIGHT = "Behind Right"


class Roeye5(str, Enum):
    """Enum class for Roeye5"""

    BEHIND_EITHER = "Behind Either"
    BEHIND_LEFT = "Behind Left"
    BEHIND_RIGHT = "Behind Right"


class Rolims(str, Enum):
    """Enum class for Rolims"""

    NEW_STEREOTAXIC_INJECTION = "New Stereotaxic Injections"
    STEREOTAXIC_INJECTIONS = "Stereotaxic Injections"


class Rosop(str, Enum):
    """Enum class for Rosop"""

    AF0131_RETROORBITAL_INJEC = "AF0131 Retro-orbital Injection"
    AF0139_RETROORBITAL_INJEC = (
        "AF0139 Retro-orbital Injection of AAV Vectors for Viral"
        " Genetic Tools Pipeline"
    )


class Species(str, Enum):
    """Enum class for Species"""

    MOUSE = "Mouse"
    RAT = "Rat"


class TamFrequency(str, Enum):
    """Enum class for TamFrequency"""

    OTHER_TYPE_IN = "Other (Type in)"
    SINGLE_DOSE = "Single dose"
    STANDARD_5_DAY_DOSE = "Standard 5 day dose"


class TmpFrequency(str, Enum):
    """Enum class for TmpFrequency"""

    OTHER_TYPEIN = "Other (Type-in)"
    SINGLE_DOSE = "Single dose"
    STANDARD_3_DAY_DOSE = "Standard 3 day dose"


class WhereToObtainSubstanceRo(str, Enum):
    """Enum class for WhereToObtainSubstanceRo"""

    LAS_BLUE_BIN_IN_VIVARIUM = (
        "LAS blue bin in Vivarium -80 freezer(1st shelf)"
    )
    OTHER_TYPE_IN = "Other (Type in)"


class WheretoobtainsubstanceIcv(str, Enum):
    """Enum class for WheretoobtainsubstanceIcv"""

    LAS_BLUE_BIN_IN_VIVARIUM = "LAS blue bin in Vivarium –80 freezer"
    OTHER_SPECIFY_BELOW = "Other (Specify below)"


class LASList(BaseModel, extra="allow"):
    """Fields in Sharepoint list"""

    accommodation_comment: Optional[str] = Field(
        default=None,
        alias="AccommodationComment",
        title="AccommodationComment",
    )
    acsf_time1: Optional[str] = Field(
        default=None, alias="ACSFTime1", title="ACSFTime1"
    )
    acsf_time2: Optional[str] = Field(
        default=None, alias="ACSFTime2", title="ACSFTime2"
    )
    acsf_time3: Optional[str] = Field(
        default=None, alias="ACSFTime3", title="ACSFTime3"
    )
    acsf_time4: Optional[str] = Field(
        default=None, alias="ACSFTime4", title="ACSFTime4"
    )
    acsf_time5: Optional[str] = Field(
        default=None, alias="ACSFTime5", title="ACSFTime5"
    )
    acsfid1: Optional[str] = Field(
        default=None, alias="ACSFID1", title="ACSFID1"
    )
    acsfid2: Optional[str] = Field(
        default=None, alias="ACSFID2", title="ACSFID2"
    )
    acsfid3: Optional[str] = Field(
        default=None, alias="ACSFID3", title="ACSFID3"
    )
    acsfid4: Optional[str] = Field(
        default=None, alias="ACSFID4", title="ACSFID4"
    )
    acsfid5: Optional[str] = Field(
        default=None, alias="ACSFID5", title="ACSFID5"
    )
    afternoon_pf: Optional[bool] = Field(
        default=None, alias="AfternoonPF", title="AfternoonPF"
    )
    author_id: Optional[int] = Field(default=None, alias="AuthorId")
    author_lookup_id: Optional[int] = Field(
        default=None, alias="AuthorLookupId"
    )
    bc_age: Optional[str] = Field(default=None, alias="BCAge", title="BCAge")
    bc_genotypes: Optional[str] = Field(
        default=None, alias="BCGenotypes", title="BCGenotypes"
    )
    bc_location: Optional[str] = Field(
        default=None, alias="BCLocation", title="BCLocation"
    )
    bc_tube: Optional[str] = Field(
        default=None, alias="BCTube", title="BCTube"
    )
    bc_type: Annotated[Bctype, WrapValidator(optional_enum)] = Field(
        default=None, alias="BCType", title="BCType"
    )
    bc_volume: Optional[str] = Field(
        default=None, alias="BCVolume", title="BCVolume"
    )
    color_tag: Optional[str] = Field(
        default=None, alias="_ColorTag", title="Color Tag"
    )
    compliance_asset_id: Optional[str] = Field(
        default=None, alias="ComplianceAssetId", title="Compliance Asset Id"
    )
    created: Optional[datetime] = Field(
        default=None, alias="Created", title="Created"
    )
    custcontact: Optional[str] = Field(
        default=None, alias="custcontact", title="custcontact"
    )
    custom_com1: Optional[str] = Field(
        default=None, alias="CustomCom1", title="CustomCom1"
    )
    custom_com2: Optional[str] = Field(
        default=None, alias="CustomCom2", title="CustomCom2"
    )
    custpresent: Optional[bool] = Field(
        default=None, alias="custpresent", title="custpresent"
    )
    dose_route: Annotated[Doseroute, WrapValidator(optional_enum)] = Field(
        default=None, alias="doseRoute", title="doseRoute"
    )
    dose_sub: Optional[str] = Field(
        default=None, alias="doseSub", title="doseSub"
    )
    dose_where: Optional[str] = Field(
        default=None, alias="doseWhere", title="doseWhere"
    )
    doseduration: Optional[str] = Field(
        default=None, alias="doseduration", title="doseduration"
    )
    dosevolume: Optional[str] = Field(
        default=None, alias="dosevolume", title="dosevolume"
    )
    doxycycline: Optional[bool] = Field(
        default=None, alias="Doxycycline", title="Doxycycline"
    )
    editor_id: Optional[int] = Field(default=None, alias="EditorId")
    icv_comment: Optional[str] = Field(
        default=None, alias="icvComment", title="icvComment"
    )
    icv_id1: Optional[str] = Field(
        default=None, alias="icvID1", title="icvID1"
    )
    icv_id2: Optional[str] = Field(
        default=None, alias="icvID2", title="icvID2"
    )
    icv_id3: Optional[str] = Field(
        default=None, alias="icvID3", title="icvID3"
    )
    icv_id4: Optional[str] = Field(
        default=None, alias="icvID4", title="icvID4"
    )
    icv_id5: Optional[str] = Field(
        default=None, alias="icvID5", title="icvID5"
    )
    icv_lims: Annotated[Icvlims, WrapValidator(optional_enum)] = Field(
        default=None, alias="icvLIMS", title="icvLIMS"
    )
    icv_route1: Annotated[Icvroute1, WrapValidator(optional_enum)] = Field(
        default=None, alias="icvRoute1", title="icvRoute1"
    )
    icv_route2: Annotated[Icvroute2, WrapValidator(optional_enum)] = Field(
        default=None, alias="icvRoute2", title="icvRoute2"
    )
    icv_route3: Annotated[Icvroute3, WrapValidator(optional_enum)] = Field(
        default=None, alias="icvRoute3", title="icvRoute3"
    )
    icv_route4: Annotated[Icvroute4, WrapValidator(optional_enum)] = Field(
        default=None, alias="icvRoute4", title="icvRoute4"
    )
    icv_route5: Annotated[Icvroute5, WrapValidator(optional_enum)] = Field(
        default=None, alias="icvRoute5", title="icvRoute5"
    )
    icv_sub1: Optional[str] = Field(
        default=None, alias="icvSub1", title="icvSub1"
    )
    icv_sub2: Optional[str] = Field(
        default=None, alias="icvSub2", title="icvSub2"
    )
    icv_sub3: Optional[str] = Field(
        default=None, alias="icvSub3", title="icvSub3"
    )
    icv_sub4: Optional[str] = Field(
        default=None, alias="icvSub4", title="icvSub4"
    )
    icv_sub5: Optional[str] = Field(
        default=None, alias="icvSub5", title="icvSub5"
    )
    id: Optional[int] = Field(default=None, alias="ID", title="ID")
    l_ta_id1: Optional[str] = Field(
        default=None, alias="LTaID1", title="LTaID1"
    )
    l_ta_id2: Optional[str] = Field(
        default=None, alias="LTaID2", title="LTaID2"
    )
    l_ta_id3: Optional[str] = Field(
        default=None, alias="LTaID3", title="LTaID3"
    )
    l_ta_id4: Optional[str] = Field(
        default=None, alias="LTaID4", title="LTaID4"
    )
    l_ta_id5: Optional[str] = Field(
        default=None, alias="LTaID5", title="LTaID5"
    )
    l_tdate1: Optional[datetime] = Field(
        default=None, alias="LTdate1", title="LTdate1"
    )
    l_tdate2: Optional[datetime] = Field(
        default=None, alias="LTdate2", title="LTdate2"
    )
    l_tdate3: Optional[datetime] = Field(
        default=None, alias="LTdate3", title="LTdate3"
    )
    l_tdate4: Optional[datetime] = Field(
        default=None, alias="LTdate4", title="LTdate4"
    )
    l_tdate5: Optional[datetime] = Field(
        default=None, alias="LTdate5", title="LTdate5"
    )
    las_comments: Optional[str] = Field(
        default=None, alias="LASComments", title="LASComments"
    )
    lims_entry: Optional[bool] = Field(
        default=None, alias="LIMSEntry", title="LIMSEntry"
    )
    lims_project: Annotated[Limsproject, WrapValidator(optional_enum)] = Field(
        default=None, alias="LIMSProject", title="LIMSProject"
    )
    lims_workflow: Annotated[Limsworkflow, WrapValidator(optional_enum)] = (
        Field(default=None, alias="LIMSWorkflow", title="LIMSWorkflow")
    )
    lims_workflow_2: Annotated[Limsworkflow2, WrapValidator(optional_enum)] = (
        Field(
            default=None, alias="LIMSWorkflow_x0020_2", title="LIMSWorkflow 2"
        )
    )
    lt_task1: Optional[str] = Field(
        default=None, alias="LTTask1", title="LTTask1"
    )
    lt_task2: Optional[str] = Field(
        default=None, alias="LTTask2", title="LTTask2"
    )
    lt_task3: Optional[str] = Field(
        default=None, alias="LTTask3", title="LTTask3"
    )
    lt_task4: Optional[str] = Field(
        default=None, alias="LTTask4", title="LTTask4"
    )
    lt_task5: Optional[str] = Field(
        default=None, alias="LTTask5", title="LTTask5"
    )
    modified: Optional[datetime] = Field(
        default=None, alias="Modified", title="Modified"
    )
    n_end_date: Optional[datetime] = Field(
        default=None, alias="nEnd_x0020_Date", title="End Date"
    )
    n_roid1: Optional[str] = Field(
        default=None, alias="nROID1", title="nROID1"
    )
    n_roid2: Optional[str] = Field(
        default=None, alias="nROID2", title="nROID2"
    )
    n_roid3: Optional[str] = Field(
        default=None, alias="nROID3", title="nROID3"
    )
    n_roid4: Optional[str] = Field(
        default=None, alias="nROID4", title="nROID4"
    )
    n_roid5: Optional[str] = Field(
        default=None, alias="nROID5", title="nROID5"
    )
    n_start_date: Optional[datetime] = Field(
        default=None, alias="nStart_x0020_Date", title="Start Date"
    )
    oct: Optional[bool] = Field(default=None, alias="OCT", title="OCT")
    post_fix: Annotated[Postfix, WrapValidator(optional_enum)] = Field(
        default=None, alias="PostFix", title="PostFix"
    )
    project_id: Annotated[Projectid, WrapValidator(optional_enum)] = Field(
        default=None, alias="ProjectID", title="ProjectID"
    )
    protocol: Annotated[Protocol, WrapValidator(optional_enum)] = Field(
        default=None, alias="Protocol", title="Protocol"
    )
    qc_door_sheet: Optional[bool] = Field(
        default=None, alias="QCDoorSheet", title="QCDoorSheet"
    )
    req_age1: Optional[str] = Field(
        default=None, alias="ReqAge1", title="ReqAge1"
    )
    req_age2: Optional[str] = Field(
        default=None, alias="ReqAge2", title="ReqAge2"
    )
    req_age3: Optional[str] = Field(
        default=None, alias="ReqAge3", title="ReqAge3"
    )
    req_pro1: Annotated[Reqpro1, WrapValidator(optional_enum)] = Field(
        default=None, alias="ReqPro1", title="ReqPro1"
    )
    req_pro2: Annotated[Reqpro2, WrapValidator(optional_enum)] = Field(
        default=None, alias="ReqPro2", title="ReqPro2"
    )
    req_pro3: Annotated[Reqpro3, WrapValidator(optional_enum)] = Field(
        default=None, alias="ReqPro3", title="ReqPro3"
    )
    reqdate1: Optional[datetime] = Field(
        default=None, alias="Reqdate1", title="Reqdate1"
    )
    reqdate2: Optional[datetime] = Field(
        default=None, alias="Reqdate2", title="Reqdate2"
    )
    reqdate3: Optional[datetime] = Field(
        default=None, alias="Reqdate3", title="Reqdate3"
    )
    request_status2: Annotated[
        Requeststatus2, WrapValidator(optional_enum)
    ] = Field(
        default=None,
        alias="RequestStatus2",
        title="RequestStatus2",
        description="New, In Progress, Complete, Cancelled",
    )
    ro_box1: Optional[str] = Field(
        default=None, alias="roBox1", title="roBox1"
    )
    ro_box2: Optional[str] = Field(
        default=None, alias="roBox2", title="roBox2"
    )
    ro_box3: Optional[str] = Field(
        default=None, alias="roBox3", title="roBox3"
    )
    ro_box4: Optional[str] = Field(
        default=None, alias="roBox4", title="roBox4"
    )
    ro_box5: Optional[str] = Field(
        default=None, alias="roBox5", title="roBox5"
    )
    ro_comment: Optional[str] = Field(
        default=None, alias="roComment", title="roComment"
    )
    ro_discard: Optional[bool] = Field(
        default=None,
        alias="roDiscard",
        title="roDiscard",
        description="Discard remaining substance after dose?",
    )
    ro_eye1: Annotated[Roeye1, WrapValidator(optional_enum)] = Field(
        default=None, alias="roEye1", title="roEye1"
    )
    ro_eye2: Annotated[Roeye2, WrapValidator(optional_enum)] = Field(
        default=None, alias="roEye2", title="roEye2"
    )
    ro_eye3: Annotated[Roeye3, WrapValidator(optional_enum)] = Field(
        default=None, alias="roEye3", title="roEye3"
    )
    ro_eye4: Annotated[Roeye4, WrapValidator(optional_enum)] = Field(
        default=None, alias="roEye4", title="roEye4"
    )
    ro_eye5: Annotated[Roeye5, WrapValidator(optional_enum)] = Field(
        default=None, alias="roEye5", title="roEye5"
    )
    ro_gc1: Optional[str] = Field(default=None, alias="roGC1", title="roGC1")
    ro_gc1b: Optional[str] = Field(
        default=None, alias="roGC1b", title="roGC1b"
    )
    ro_gc1c: Optional[str] = Field(
        default=None, alias="roGC1c", title="roGC1c"
    )
    ro_gc1d: Optional[str] = Field(
        default=None, alias="roGC1d", title="roGC1d"
    )
    ro_gc2: Optional[str] = Field(default=None, alias="roGC2", title="roGC2")
    ro_gc2b: Optional[str] = Field(
        default=None, alias="roGC2b", title="roGC2b"
    )
    ro_gc2c: Optional[str] = Field(
        default=None, alias="roGC2c", title="roGC2c"
    )
    ro_gc2d: Optional[str] = Field(
        default=None, alias="roGC2d", title="roGC2d"
    )
    ro_gc3: Optional[str] = Field(default=None, alias="roGC3", title="roGC3")
    ro_gc3b: Optional[str] = Field(
        default=None, alias="roGC3b", title="roGC3b"
    )
    ro_gc3c: Optional[str] = Field(
        default=None, alias="roGC3c", title="roGC3c"
    )
    ro_gc3d: Optional[str] = Field(
        default=None, alias="roGC3d", title="roGC3d"
    )
    ro_gc4: Optional[str] = Field(default=None, alias="roGC4", title="roGC4")
    ro_gc4b: Optional[str] = Field(
        default=None, alias="roGC4b", title="roGC4b"
    )
    ro_gc4c: Optional[str] = Field(
        default=None, alias="roGC4c", title="roGC4c"
    )
    ro_gc4d: Optional[str] = Field(
        default=None, alias="roGC4d", title="roGC4d"
    )
    ro_gc5: Optional[str] = Field(default=None, alias="roGC5", title="roGC5")
    ro_gc5b: Optional[str] = Field(
        default=None, alias="roGC5b", title="roGC5b"
    )
    ro_gc5c: Optional[str] = Field(
        default=None, alias="roGC5c", title="roGC5c"
    )
    ro_gc5d: Optional[str] = Field(
        default=None, alias="roGC5d", title="roGC5d"
    )
    ro_ice: Optional[bool] = Field(default=None, alias="roIce", title="roIce")
    ro_lims: Annotated[Rolims, WrapValidator(optional_enum)] = Field(
        default=None, alias="roLIMS", title="roLIMS"
    )
    ro_lot1: Optional[str] = Field(
        default=None, alias="roLot1", title="roLot1"
    )
    ro_lot1b: Optional[str] = Field(
        default=None, alias="roLot1b", title="roLot1b"
    )
    ro_lot1c: Optional[str] = Field(
        default=None, alias="roLot1c", title="roLot1c"
    )
    ro_lot1d: Optional[str] = Field(
        default=None, alias="roLot1d", title="roLot1d"
    )
    ro_lot2: Optional[str] = Field(
        default=None, alias="roLot2", title="roLot2"
    )
    ro_lot2b: Optional[str] = Field(
        default=None, alias="roLot2b", title="roLot2b"
    )
    ro_lot2c: Optional[str] = Field(
        default=None, alias="roLot2c", title="roLot2c"
    )
    ro_lot2d: Optional[str] = Field(
        default=None, alias="roLot2d", title="roLot2d"
    )
    ro_lot3: Optional[str] = Field(
        default=None, alias="roLot3", title="roLot3"
    )
    ro_lot3b: Optional[str] = Field(
        default=None, alias="roLot3b", title="roLot3b"
    )
    ro_lot3c: Optional[str] = Field(
        default=None, alias="roLot3c", title="roLot3c"
    )
    ro_lot3d: Optional[str] = Field(
        default=None, alias="roLot3d", title="roLot3d"
    )
    ro_lot4: Optional[str] = Field(
        default=None, alias="roLot4", title="roLot4"
    )
    ro_lot4b: Optional[str] = Field(
        default=None, alias="roLot4b", title="roLot4b"
    )
    ro_lot4c: Optional[str] = Field(
        default=None, alias="roLot4c", title="roLot4c"
    )
    ro_lot4d: Optional[str] = Field(
        default=None, alias="roLot4d", title="roLot4d"
    )
    ro_lot5: Optional[str] = Field(
        default=None, alias="roLot5", title="roLot5"
    )
    ro_lot5b: Optional[str] = Field(
        default=None, alias="roLot5b", title="roLot5b"
    )
    ro_lot5c: Optional[str] = Field(
        default=None, alias="roLot5c", title="roLot5c"
    )
    ro_lot5d: Optional[str] = Field(
        default=None, alias="roLot5d", title="roLot5d"
    )
    ro_sop: Annotated[Rosop, WrapValidator(optional_enum)] = Field(
        default=None, alias="roSOP", title="roSOP"
    )
    ro_spin_down: Optional[bool] = Field(
        default=None, alias="roSpinDown", title="roSpinDown"
    )
    ro_sub1: Optional[str] = Field(
        default=None, alias="roSub1", title="roSub1"
    )
    ro_sub1b: Optional[str] = Field(
        default=None, alias="roSub1b", title="roSub1b"
    )
    ro_sub1c: Optional[str] = Field(
        default=None, alias="roSub1c", title="roSub1c"
    )
    ro_sub1d: Optional[str] = Field(
        default=None, alias="roSub1d", title="roSub1d"
    )
    ro_sub2: Optional[str] = Field(
        default=None, alias="roSub2", title="roSub2"
    )
    ro_sub2b: Optional[str] = Field(
        default=None, alias="roSub2b", title="roSub2b"
    )
    ro_sub2c: Optional[str] = Field(
        default=None, alias="roSub2c", title="roSub2c"
    )
    ro_sub2d: Optional[str] = Field(
        default=None, alias="roSub2d", title="roSub2d"
    )
    ro_sub3: Optional[str] = Field(
        default=None, alias="roSub3", title="roSub3"
    )
    ro_sub3b: Optional[str] = Field(
        default=None, alias="roSub3b", title="roSub3b"
    )
    ro_sub3c: Optional[str] = Field(
        default=None, alias="roSub3c", title="roSub3c"
    )
    ro_sub3d: Optional[str] = Field(
        default=None, alias="roSub3d", title="roSub3d"
    )
    ro_sub4: Optional[str] = Field(
        default=None, alias="roSub4", title="roSub4"
    )
    ro_sub4b: Optional[str] = Field(
        default=None, alias="roSub4b", title="roSub4b"
    )
    ro_sub4c: Optional[str] = Field(
        default=None, alias="roSub4c", title="roSub4c"
    )
    ro_sub4d: Optional[str] = Field(
        default=None, alias="roSub4d", title="roSub4d"
    )
    ro_sub5: Optional[str] = Field(
        default=None, alias="roSub5", title="roSub5"
    )
    ro_sub5b: Optional[str] = Field(
        default=None, alias="roSub5b", title="roSub5b"
    )
    ro_sub5c: Optional[str] = Field(
        default=None, alias="roSub5c", title="roSub5c"
    )
    ro_sub5d: Optional[str] = Field(
        default=None, alias="roSub5d", title="roSub5d"
    )
    ro_tite1: Optional[str] = Field(
        default=None, alias="roTite1", title="roTite1"
    )
    ro_tite1b: Optional[str] = Field(
        default=None, alias="roTite1b", title="roTite1b"
    )
    ro_tite1c: Optional[str] = Field(
        default=None, alias="roTite1c", title="roTite1c"
    )
    ro_tite1d: Optional[str] = Field(
        default=None, alias="roTite1d", title="roTite1d"
    )
    ro_tite2: Optional[str] = Field(
        default=None, alias="roTite2", title="roTite2"
    )
    ro_tite2b: Optional[str] = Field(
        default=None, alias="roTite2b", title="roTite2b"
    )
    ro_tite2c: Optional[str] = Field(
        default=None, alias="roTite2c", title="roTite2c"
    )
    ro_tite2d: Optional[str] = Field(
        default=None, alias="roTite2d", title="roTite2d"
    )
    ro_tite3: Optional[str] = Field(
        default=None, alias="roTite3", title="roTite3"
    )
    ro_tite3b: Optional[str] = Field(
        default=None, alias="roTite3b", title="roTite3b"
    )
    ro_tite3c: Optional[str] = Field(
        default=None, alias="roTite3c", title="roTite3c"
    )
    ro_tite3d: Optional[str] = Field(
        default=None, alias="roTite3d", title="roTite3d"
    )
    ro_tite4: Optional[str] = Field(
        default=None, alias="roTite4", title="roTite4"
    )
    ro_tite4b: Optional[str] = Field(
        default=None, alias="roTite4b", title="roTite4b"
    )
    ro_tite4c: Optional[str] = Field(
        default=None, alias="roTite4c", title="roTite4c"
    )
    ro_tite4d: Optional[str] = Field(
        default=None, alias="roTite4d", title="roTite4d"
    )
    ro_tite5: Optional[str] = Field(
        default=None, alias="roTite5", title="roTite5"
    )
    ro_tite5b: Optional[str] = Field(
        default=None, alias="roTite5b", title="roTite5b"
    )
    ro_tite5c: Optional[str] = Field(
        default=None, alias="roTite5c", title="roTite5c"
    )
    ro_tite5d: Optional[str] = Field(
        default=None, alias="roTite5d", title="roTite5d"
    )
    ro_tube1: Optional[str] = Field(
        default=None, alias="roTube1", title="roTube1"
    )
    ro_tube2: Optional[str] = Field(
        default=None, alias="roTube2", title="roTube2"
    )
    ro_tube3: Optional[str] = Field(
        default=None, alias="roTube3", title="roTube3"
    )
    ro_tube4: Optional[str] = Field(
        default=None, alias="roTube4", title="roTube4"
    )
    ro_tube5: Optional[str] = Field(
        default=None, alias="roTube5", title="roTube5"
    )
    ro_vol1: Optional[str] = Field(
        default=None, alias="roVol1", title="roVol1"
    )
    ro_vol2: Optional[str] = Field(
        default=None, alias="roVol2", title="roVol2"
    )
    ro_vol3: Optional[str] = Field(
        default=None, alias="roVol3", title="roVol3"
    )
    ro_vol4: Optional[str] = Field(
        default=None, alias="roVol4", title="roVol4"
    )
    ro_vol5: Optional[str] = Field(
        default=None, alias="roVol5", title="roVol5"
    )
    ro_vol_v1: Optional[str] = Field(
        default=None, alias="roVolV1", title="roVolV1"
    )
    ro_vol_v1b: Optional[str] = Field(
        default=None, alias="roVolV1b", title="roVolV1b"
    )
    ro_vol_v1c: Optional[str] = Field(
        default=None, alias="roVolV1c", title="roVolV1c"
    )
    ro_vol_v1d: Optional[str] = Field(
        default=None, alias="roVolV1d", title="roVolV1d"
    )
    ro_vol_v2: Optional[str] = Field(
        default=None, alias="roVolV2", title="roVolV2"
    )
    ro_vol_v2b: Optional[str] = Field(
        default=None, alias="roVolV2b", title="roVolV2b"
    )
    ro_vol_v2c: Optional[str] = Field(
        default=None, alias="roVolV2c", title="roVolV2c"
    )
    ro_vol_v2d: Optional[str] = Field(
        default=None, alias="roVolV2d", title="roVolV2d"
    )
    ro_vol_v3: Optional[str] = Field(
        default=None, alias="roVolV3", title="roVolV3"
    )
    ro_vol_v3b: Optional[str] = Field(
        default=None, alias="roVolV3b", title="roVolV3b"
    )
    ro_vol_v3c: Optional[str] = Field(
        default=None, alias="roVolV3c", title="roVolV3c"
    )
    ro_vol_v3d: Optional[str] = Field(
        default=None, alias="roVolV3d", title="roVolV3d"
    )
    ro_vol_v4: Optional[str] = Field(
        default=None, alias="roVolV4", title="roVolV4"
    )
    ro_vol_v4b: Optional[str] = Field(
        default=None, alias="roVolV4b", title="roVolV4b"
    )
    ro_vol_v4c: Optional[str] = Field(
        default=None, alias="roVolV4c", title="roVolV4c"
    )
    ro_vol_v4d: Optional[str] = Field(
        default=None, alias="roVolV4d", title="roVolV4d"
    )
    ro_vol_v5: Optional[str] = Field(
        default=None, alias="roVolV5", title="roVolV5"
    )
    ro_vol_v5b: Optional[str] = Field(
        default=None, alias="roVolV5b", title="roVolV5b"
    )
    ro_vol_v5c: Optional[str] = Field(
        default=None, alias="roVolV5c", title="roVolV5c"
    )
    ro_vol_v5d: Optional[str] = Field(
        default=None, alias="roVolV5d", title="roVolV5d"
    )
    ro_where: Annotated[
        WhereToObtainSubstanceRo, WrapValidator(optional_enum)
    ] = Field(
        default=None, alias="roWhere", title="Where to obtain substance (RO)"
    )
    spec_deli_loc: Optional[str] = Field(
        default=None,
        alias="SpecDeliLoc",
        title="Specimen Delivery Location",
        description="Specimen Delivery Location",
    )
    species: Annotated[Species, WrapValidator(optional_enum)] = Field(
        default=None, alias="Species", title="Species"
    )
    tam: Optional[bool] = Field(default=None, alias="TAM", title="TAM")
    tam_age: Optional[str] = Field(
        default=None, alias="TAMAge", title="TAM Age"
    )
    tam_freq: Annotated[TamFrequency, WrapValidator(optional_enum)] = Field(
        default=None, alias="TAMFreq", title="TAM Frequency"
    )
    title: Optional[str] = Field(
        default=None, alias="Title", title="Animal ID"
    )
    tmp: Optional[bool] = Field(default=None, alias="TMP", title="TMP")
    tmp_age: Optional[str] = Field(
        default=None, alias="TMPAge", title="TMP Age"
    )
    tmp_freq: Annotated[TmpFrequency, WrapValidator(optional_enum)] = Field(
        default=None, alias="TMPFreq", title="TMP Frequency"
    )
    ui_version_string: Optional[str] = Field(
        default=None, alias="_UIVersionString", title="Version"
    )
    wellness_report_no_x002_f: Optional[bool] = Field(
        default=None,
        alias="WellnessReport_x0028_No_x002F_Ye",
        title="WellnessReport(No/Yes)",
    )
    whereto_obtainsubstance_i: Annotated[
        WheretoobtainsubstanceIcv, WrapValidator(optional_enum)
    ] = Field(
        default=None,
        alias="WheretoObtainsubstance_x0028_ICV",
        title="WheretoObtainsubstance(ICV)",
    )
