# 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 .types import (
        Gender,
        IndividualBase,
        IndividualBaseOptional,
        IndividualId,
        Patient,
        PatientBase,
        PatientClinicalTrialInfo,
        PatientClinicalTrialInfoCreate,
        PatientCreate,
        PatientNonInsurancePayerInfo,
        PatientNonInsurancePayerInfoCreate,
        PatientNonInsurancePayerInfoCreateOptional,
        PatientUpdate,
        PatientUpdateWithOptionalAddress,
        Subscriber,
        SubscriberBase,
        SubscriberBaseOptional,
        SubscriberCreate,
        SubscriberCreateOptional,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "Gender": ".types",
    "IndividualBase": ".types",
    "IndividualBaseOptional": ".types",
    "IndividualId": ".types",
    "Patient": ".types",
    "PatientBase": ".types",
    "PatientClinicalTrialInfo": ".types",
    "PatientClinicalTrialInfoCreate": ".types",
    "PatientCreate": ".types",
    "PatientNonInsurancePayerInfo": ".types",
    "PatientNonInsurancePayerInfoCreate": ".types",
    "PatientNonInsurancePayerInfoCreateOptional": ".types",
    "PatientUpdate": ".types",
    "PatientUpdateWithOptionalAddress": ".types",
    "Subscriber": ".types",
    "SubscriberBase": ".types",
    "SubscriberBaseOptional": ".types",
    "SubscriberCreate": ".types",
    "SubscriberCreateOptional": ".types",
}


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__ = [
    "Gender",
    "IndividualBase",
    "IndividualBaseOptional",
    "IndividualId",
    "Patient",
    "PatientBase",
    "PatientClinicalTrialInfo",
    "PatientClinicalTrialInfoCreate",
    "PatientCreate",
    "PatientNonInsurancePayerInfo",
    "PatientNonInsurancePayerInfoCreate",
    "PatientNonInsurancePayerInfoCreateOptional",
    "PatientUpdate",
    "PatientUpdateWithOptionalAddress",
    "Subscriber",
    "SubscriberBase",
    "SubscriberBaseOptional",
    "SubscriberCreate",
    "SubscriberCreateOptional",
]
