import logging
from typing import Optional
from q2_sdk.hq.models.hq_credentials import HqCredentials
from q2_sdk.models.cores.base_core import BaseCore
from q2_sdk.models.cores.models.core_user import CoreUser
from ..exceptions import MissingCoreParameters
from .mappers.demographic_info_mapper import DemographicInfoMapper
from .queries.demographic_info_query import DemographicInfoQuery
[docs]
class Core(BaseCore):
CONFIG_FILE_NAME = "FiservCommunicatorOpenPremier_Core"
OPTIONAL_CONFIGURATIONS = {"BUSINESS": False, "GET_NAME_IDS": False}
def __init__(
self,
logger: logging.Logger,
core_user: CoreUser,
hq_credentials: Optional[HqCredentials] = None,
**kwargs,
):
super().__init__(logger, core_user, hq_credentials=hq_credentials, **kwargs)
self.orginating_branch = None
[docs]
async def build_demographic_info(self) -> DemographicInfoMapper:
"""
Builds a request to retrieve a user's demographic information from the core with the user's social security number.
"""
if not self.configured_user.ssn:
raise MissingCoreParameters("Social security number not found")
self.logger.debug(
"Attempting to build request to retrieve user's demographic information..."
)
req_dict = {"ssn": self.configured_user.ssn}
demo_query = DemographicInfoQuery(self.logger, req_dict=req_dict)
demo_mapper = DemographicInfoMapper(
list_of_queries=[demo_query],
get_name_ids=getattr(self.config, "GET_NAME_IDS", None),
is_business=getattr(self.config, "BUSINESS", None),
hq_credentials=self.hq_credentials,
)
return demo_mapper