# -*- 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 Deactivate(EventTypeAbstractModel):

    Meta: "DeactivateMeta" = Field(...)
    Providers: List["DeactivateProvider"] = Field(...)


class DeactivateMeta(RedoxAbstractModel):

    DataModel: str = Field(...)
    Destinations: List["DeactivateMetaDestination"] = Field(None)
    EventDateTime: Union[str, None] = Field(None)
    EventType: str = Field(...)
    FacilityCode: Union[str, None] = Field(None)
    Logs: List["DeactivateMetaLog"] = Field(None)
    Message: "DeactivateMetaMessage" = Field(None)
    Source: "DeactivateMetaSource" = Field(None)
    Test: Union[bool, None] = Field(None)
    Transmission: "DeactivateMetaTransmission" = Field(None)


class DeactivateMetaDestination(RedoxAbstractModel):

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


class DeactivateMetaLog(RedoxAbstractModel):

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


class DeactivateMetaMessage(RedoxAbstractModel):

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


class DeactivateMetaSource(RedoxAbstractModel):

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


class DeactivateMetaTransmission(RedoxAbstractModel):

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


class DeactivateProvider(RedoxAbstractModel):

    Demographics: "DeactivateProviderDemographics" = Field(None)
    Identifiers: List["DeactivateProviderIdentifier"] = Field(...)
    Qualifications: List["DeactivateProviderQualification"] = Field(None)
    Roles: List["DeactivateProviderRole"] = Field(None)


class DeactivateProviderDemographics(RedoxAbstractModel):

    Addresses: List["DeactivateProviderDemographicsAddress"] = 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: "DeactivateProviderDemographicsPhoneNumber" = Field(None)
    Sex: Union[str, None] = Field(None)


class DeactivateProviderDemographicsAddress(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 DeactivateProviderDemographicsPhoneNumber(RedoxAbstractModel):

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


class DeactivateProviderIdentifier(RedoxAbstractModel):

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


class DeactivateProviderQualification(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["DeactivateProviderQualificationIdentifier"] = Field(None)
    StartDate: Union[str, None] = Field(None)


class DeactivateProviderQualificationIdentifier(RedoxAbstractModel):

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


class DeactivateProviderRole(RedoxAbstractModel):

    Availability: List["DeactivateProviderRoleAvailability"] = Field(None)
    Identifiers: List["DeactivateProviderRoleIdentifier"] = Field(None)
    Locations: List["DeactivateProviderRoleLocation"] = Field(None)
    Organization: "DeactivateProviderRoleOrganization" = Field(None)
    Services: List["DeactivateProviderRoleService"] = Field(None)
    Specialties: List["DeactivateProviderRoleSpecialty"] = Field(None)


class DeactivateProviderRoleAvailability(RedoxAbstractModel):

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


class DeactivateProviderRoleIdentifier(RedoxAbstractModel):

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


class DeactivateProviderRoleLocation(RedoxAbstractModel):

    Address: "DeactivateProviderRoleLocationAddress" = Field(None)
    Description: Union[str, None] = Field(None)
    EmailAddresses: List[str] = Field(None)
    Identifiers: List["DeactivateProviderRoleLocationIdentifier"] = Field(None)
    Name: Union[str, None] = Field(None)
    PhoneNumber: "DeactivateProviderRoleLocationPhoneNumber" = Field(None)
    Status: Union[str, None] = Field(None)


class DeactivateProviderRoleLocationAddress(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 DeactivateProviderRoleLocationIdentifier(RedoxAbstractModel):

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


class DeactivateProviderRoleLocationPhoneNumber(RedoxAbstractModel):

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


class DeactivateProviderRoleOrganization(RedoxAbstractModel):

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


class DeactivateProviderRoleOrganizationAddress(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 DeactivateProviderRoleOrganizationIdentifier(RedoxAbstractModel):

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


class DeactivateProviderRoleService(RedoxAbstractModel):

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


class DeactivateProviderRoleServiceIdentifier(RedoxAbstractModel):

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


class DeactivateProviderRoleServicePhoneNumber(RedoxAbstractModel):

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


class DeactivateProviderRoleSpecialty(RedoxAbstractModel):

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


Deactivate.update_forward_refs()
DeactivateMeta.update_forward_refs()
DeactivateProvider.update_forward_refs()
DeactivateProviderDemographics.update_forward_refs()
DeactivateProviderQualification.update_forward_refs()
DeactivateProviderRole.update_forward_refs()
DeactivateProviderRoleLocation.update_forward_refs()
DeactivateProviderRoleOrganization.update_forward_refs()
DeactivateProviderRoleService.update_forward_refs()
