# This file was auto-generated by Fern from our API Definition.

# isort: skip_file

import typing
from importlib import import_module

if typing.TYPE_CHECKING:
    from . import appointments, common, coverages, eligibility_checks, images, lists, notes, patients, tags
    from .common import (
        AdditionalPayerInformation,
        Address,
        AddressUse,
        AppointmentId,
        BadRequestError,
        BaseModel,
        CanonicalClinicalTrialAssociation,
        CanonicalClinicalTrialId,
        CanonicalNonInsurancePayerAssociation,
        CanonicalNonInsurancePayerId,
        CanonicalProviderId,
        CanonicalServiceFacilityId,
        ContactPoint,
        ContactPointUse,
        CoverageId,
        DisabilityStatus,
        ErrorBase4Xx,
        Ethnicity,
        ExternalIdentifier,
        ExternalProvider,
        ExternalProviderType,
        FilterQueryString,
        Gender,
        HumanName,
        NameUse,
        NotFoundError,
        NoteId,
        OrganizationId,
        PageToken,
        PatientId,
        PatientServiceFacility,
        PayerId,
        PayerPlanGroupId,
        Period,
        Race,
        Relationship,
        ResourcePage,
        Sex,
        SexualOrientation,
        SortDirection,
        TagId,
        UserId,
        VersionConflictError,
        VersionConflictErrorBody,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "AdditionalPayerInformation": ".common",
    "Address": ".common",
    "AddressUse": ".common",
    "AppointmentId": ".common",
    "BadRequestError": ".common",
    "BaseModel": ".common",
    "CanonicalClinicalTrialAssociation": ".common",
    "CanonicalClinicalTrialId": ".common",
    "CanonicalNonInsurancePayerAssociation": ".common",
    "CanonicalNonInsurancePayerId": ".common",
    "CanonicalProviderId": ".common",
    "CanonicalServiceFacilityId": ".common",
    "ContactPoint": ".common",
    "ContactPointUse": ".common",
    "CoverageId": ".common",
    "DisabilityStatus": ".common",
    "ErrorBase4Xx": ".common",
    "Ethnicity": ".common",
    "ExternalIdentifier": ".common",
    "ExternalProvider": ".common",
    "ExternalProviderType": ".common",
    "FilterQueryString": ".common",
    "Gender": ".common",
    "HumanName": ".common",
    "NameUse": ".common",
    "NotFoundError": ".common",
    "NoteId": ".common",
    "OrganizationId": ".common",
    "PageToken": ".common",
    "PatientId": ".common",
    "PatientServiceFacility": ".common",
    "PayerId": ".common",
    "PayerPlanGroupId": ".common",
    "Period": ".common",
    "Race": ".common",
    "Relationship": ".common",
    "ResourcePage": ".common",
    "Sex": ".common",
    "SexualOrientation": ".common",
    "SortDirection": ".common",
    "TagId": ".common",
    "UserId": ".common",
    "VersionConflictError": ".common",
    "VersionConflictErrorBody": ".common",
    "appointments": ".appointments",
    "common": ".common",
    "coverages": ".coverages",
    "eligibility_checks": ".eligibility_checks",
    "images": ".images",
    "lists": ".lists",
    "notes": ".notes",
    "patients": ".patients",
    "tags": ".tags",
}


def __getattr__(attr_name: str) -> typing.Any:
    module_name = _dynamic_imports.get(attr_name)
    if module_name is None:
        raise AttributeError(f"No {attr_name} found in _dynamic_imports for module name -> {__name__}")
    try:
        module = import_module(module_name, __package__)
        if module_name == f".{attr_name}":
            return module
        else:
            return getattr(module, attr_name)
    except ImportError as e:
        raise ImportError(f"Failed to import {attr_name} from {module_name}: {e}") from e
    except AttributeError as e:
        raise AttributeError(f"Failed to get {attr_name} from {module_name}: {e}") from e


def __dir__():
    lazy_attrs = list(_dynamic_imports.keys())
    return sorted(lazy_attrs)


__all__ = [
    "AdditionalPayerInformation",
    "Address",
    "AddressUse",
    "AppointmentId",
    "BadRequestError",
    "BaseModel",
    "CanonicalClinicalTrialAssociation",
    "CanonicalClinicalTrialId",
    "CanonicalNonInsurancePayerAssociation",
    "CanonicalNonInsurancePayerId",
    "CanonicalProviderId",
    "CanonicalServiceFacilityId",
    "ContactPoint",
    "ContactPointUse",
    "CoverageId",
    "DisabilityStatus",
    "ErrorBase4Xx",
    "Ethnicity",
    "ExternalIdentifier",
    "ExternalProvider",
    "ExternalProviderType",
    "FilterQueryString",
    "Gender",
    "HumanName",
    "NameUse",
    "NotFoundError",
    "NoteId",
    "OrganizationId",
    "PageToken",
    "PatientId",
    "PatientServiceFacility",
    "PayerId",
    "PayerPlanGroupId",
    "Period",
    "Race",
    "Relationship",
    "ResourcePage",
    "Sex",
    "SexualOrientation",
    "SortDirection",
    "TagId",
    "UserId",
    "VersionConflictError",
    "VersionConflictErrorBody",
    "appointments",
    "common",
    "coverages",
    "eligibility_checks",
    "images",
    "lists",
    "notes",
    "patients",
    "tags",
]
