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

import typing

import pydantic
from ......core.pydantic_utilities import IS_PYDANTIC_V2, UniversalBaseModel
from .match_cpt_code import MatchCptCode
from .match_date import MatchDate
from .match_facility_type_code import MatchFacilityTypeCode
from .match_geo import MatchGeo
from .match_license_type import MatchLicenseType
from .match_modifiers import MatchModifiers
from .match_network_types import MatchNetworkTypes
from .match_payer import MatchPayer
from .match_payer_plan_groups import MatchPayerPlanGroups
from .match_provider import MatchProvider


class DimensionMatch(UniversalBaseModel):
    """
    Dimension matching for a service line
    """

    payer: MatchPayer
    geography: MatchGeo
    organization_billing_provider: MatchProvider
    date_of_service: MatchDate
    cpt_code: MatchCptCode
    modifiers: MatchModifiers
    license_type: MatchLicenseType
    facility_type_code: MatchFacilityTypeCode
    network_types: MatchNetworkTypes
    payer_plan_groups: MatchPayerPlanGroups

    if IS_PYDANTIC_V2:
        model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True)  # type: ignore # Pydantic v2
    else:

        class Config:
            frozen = True
            smart_union = True
            extra = pydantic.Extra.allow
