# -*- coding: utf-8 -*-
# ----  AUTO-GENERATED BY redox_lib_gen. DO NOT MODIFY MANUALLY!!  ---- #

from typing import List, Union

from pydantic import Field

from ..abstract_base import EventTypeAbstractModel, RedoxAbstractModel
from ..field_types import Number


class Activate(EventTypeAbstractModel):

    Meta: "ActivateMeta" = Field(...)
    Providers: List["ActivateProvider"] = Field(...)


class ActivateMeta(RedoxAbstractModel):

    DataModel: str = Field(...)
    Destinations: List["ActivateMetaDestination"] = Field(None)
    EventDateTime: Union[str, None] = Field(None)
    EventType: str = Field(...)
    FacilityCode: Union[str, None] = Field(None)
    Logs: List["ActivateMetaLog"] = Field(None)
    Message: "ActivateMetaMessage" = Field(None)
    Source: "ActivateMetaSource" = Field(None)
    Test: Union[bool, None] = Field(None)
    Transmission: "ActivateMetaTransmission" = Field(None)


class ActivateMetaDestination(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class ActivateMetaLog(RedoxAbstractModel):

    AttemptID: Union[str, None] = Field(None)
    ID: Union[str, None] = Field(None)


class ActivateMetaMessage(RedoxAbstractModel):

    ID: Union[Number, None] = Field(None)


class ActivateMetaSource(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)


class ActivateMetaTransmission(RedoxAbstractModel):

    ID: Union[Number, None] = Field(None)


class ActivateProvider(RedoxAbstractModel):

    Demographics: "ActivateProviderDemographics" = Field(None)
    Identifiers: List["ActivateProviderIdentifier"] = Field(...)
    Qualifications: List["ActivateProviderQualification"] = Field(None)
    Roles: List["ActivateProviderRole"] = Field(None)


class ActivateProviderDemographics(RedoxAbstractModel):

    Addresses: List["ActivateProviderDemographicsAddress"] = Field(None)
    Credentials: List[str] = Field(None)
    DOB: Union[str, None] = Field(None)
    EmailAddresses: List[str] = Field(None)
    FirstName: Union[str, None] = Field(None)
    Languages: List[str] = Field(None)
    LastName: Union[str, None] = Field(None)
    MiddleName: Union[str, None] = Field(None)
    PhoneNumber: "ActivateProviderDemographicsPhoneNumber" = Field(None)
    Sex: Union[str, None] = Field(None)


class ActivateProviderDemographicsAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    Use: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class ActivateProviderDemographicsPhoneNumber(RedoxAbstractModel):

    Home: Union[str, None] = Field(None)
    Mobile: Union[str, None] = Field(None)
    Office: Union[str, None] = Field(None)


class ActivateProviderIdentifier(RedoxAbstractModel):

    ID: str = Field(...)
    IDType: Union[str, None] = Field(None)


class ActivateProviderQualification(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    Codeset: Union[str, None] = Field(None)
    Description: Union[str, None] = Field(None)
    EndDate: Union[str, None] = Field(None)
    Identifiers: List["ActivateProviderQualificationIdentifier"] = Field(None)
    StartDate: Union[str, None] = Field(None)


class ActivateProviderQualificationIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class ActivateProviderRole(RedoxAbstractModel):

    Availability: List["ActivateProviderRoleAvailability"] = Field(None)
    Identifiers: List["ActivateProviderRoleIdentifier"] = Field(None)
    Locations: List["ActivateProviderRoleLocation"] = Field(None)
    Organization: "ActivateProviderRoleOrganization" = Field(None)
    Services: List["ActivateProviderRoleService"] = Field(None)
    Specialties: List["ActivateProviderRoleSpecialty"] = Field(None)


class ActivateProviderRoleAvailability(RedoxAbstractModel):

    AvailableEndTime: Union[str, None] = Field(None)
    AvailableStartTime: Union[str, None] = Field(None)
    Days: List[str] = Field(None)


class ActivateProviderRoleIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class ActivateProviderRoleLocation(RedoxAbstractModel):

    Address: "ActivateProviderRoleLocationAddress" = Field(None)
    Description: Union[str, None] = Field(None)
    EmailAddresses: List[str] = Field(None)
    Identifiers: List["ActivateProviderRoleLocationIdentifier"] = Field(None)
    Name: Union[str, None] = Field(None)
    PhoneNumber: "ActivateProviderRoleLocationPhoneNumber" = Field(None)
    Status: Union[str, None] = Field(None)


class ActivateProviderRoleLocationAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class ActivateProviderRoleLocationIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class ActivateProviderRoleLocationPhoneNumber(RedoxAbstractModel):

    Office: Union[str, None] = Field(None)


class ActivateProviderRoleOrganization(RedoxAbstractModel):

    Address: "ActivateProviderRoleOrganizationAddress" = Field(None)
    Identifiers: List["ActivateProviderRoleOrganizationIdentifier"] = Field(None)
    IsActive: Union[str, None] = Field(None)
    Name: Union[str, None] = Field(None)
    Type: Union[str, None] = Field(None)


class ActivateProviderRoleOrganizationAddress(RedoxAbstractModel):

    City: Union[str, None] = Field(None)
    Country: Union[str, None] = Field(None)
    County: Union[str, None] = Field(None)
    State: Union[str, None] = Field(None)
    StreetAddress: Union[str, None] = Field(None)
    ZIP: Union[str, None] = Field(None)


class ActivateProviderRoleOrganizationIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class ActivateProviderRoleService(RedoxAbstractModel):

    Description: Union[str, None] = Field(None)
    Identifiers: List["ActivateProviderRoleServiceIdentifier"] = Field(None)
    PhoneNumber: "ActivateProviderRoleServicePhoneNumber" = Field(None)
    Type: Union[str, None] = Field(None)


class ActivateProviderRoleServiceIdentifier(RedoxAbstractModel):

    ID: Union[str, None] = Field(None)
    IDType: Union[str, None] = Field(None)


class ActivateProviderRoleServicePhoneNumber(RedoxAbstractModel):

    Office: Union[str, None] = Field(None)


class ActivateProviderRoleSpecialty(RedoxAbstractModel):

    Code: Union[str, None] = Field(None)
    Codeset: Union[str, None] = Field(None)
    Description: Union[str, None] = Field(None)


Activate.update_forward_refs()
ActivateMeta.update_forward_refs()
ActivateProvider.update_forward_refs()
ActivateProviderDemographics.update_forward_refs()
ActivateProviderQualification.update_forward_refs()
ActivateProviderRole.update_forward_refs()
ActivateProviderRoleLocation.update_forward_refs()
ActivateProviderRoleOrganization.update_forward_refs()
ActivateProviderRoleService.update_forward_refs()
