# 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 (
        Authorization,
        AuthorizationUnit,
        Contact,
        CoveragesForRelatedCauses,
        DoNotInvoiceReason,
        ExternalProvenance,
        FilingOrder,
        Guarantor,
        InferredPatientMetadata,
        MaritalStatus,
        MutablePatient,
        MutablePatientWithMrn,
        OriginationDetail,
        Patient,
        PatientCoverageSnapshot,
        PatientPage,
        PatientSortField,
        Referral,
        ReferralSource,
        ReferralType,
        ReferralUnit,
        SpecializationCategory,
    )
_dynamic_imports: typing.Dict[str, str] = {
    "Authorization": ".types",
    "AuthorizationUnit": ".types",
    "Contact": ".types",
    "CoveragesForRelatedCauses": ".types",
    "DoNotInvoiceReason": ".types",
    "ExternalProvenance": ".types",
    "FilingOrder": ".types",
    "Guarantor": ".types",
    "InferredPatientMetadata": ".types",
    "MaritalStatus": ".types",
    "MutablePatient": ".types",
    "MutablePatientWithMrn": ".types",
    "OriginationDetail": ".types",
    "Patient": ".types",
    "PatientCoverageSnapshot": ".types",
    "PatientPage": ".types",
    "PatientSortField": ".types",
    "Referral": ".types",
    "ReferralSource": ".types",
    "ReferralType": ".types",
    "ReferralUnit": ".types",
    "SpecializationCategory": ".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__ = [
    "Authorization",
    "AuthorizationUnit",
    "Contact",
    "CoveragesForRelatedCauses",
    "DoNotInvoiceReason",
    "ExternalProvenance",
    "FilingOrder",
    "Guarantor",
    "InferredPatientMetadata",
    "MaritalStatus",
    "MutablePatient",
    "MutablePatientWithMrn",
    "OriginationDetail",
    "Patient",
    "PatientCoverageSnapshot",
    "PatientPage",
    "PatientSortField",
    "Referral",
    "ReferralSource",
    "ReferralType",
    "ReferralUnit",
    "SpecializationCategory",
]
