import logging
from lxml import etree
from lxml.builder import E
from q2_sdk.models.cores.queries.base_query import BaseQuery
from .mock_responses import mock_demo_info_response
[docs]
class DemographicInfoQuery(BaseQuery):
"""Builds the xml payload for the demographic call for the PCS core."""
def __init__(self, logger: logging.Logger, bank_id: str, ssn: str):
self.bank_id = bank_id
self.ssn = ssn
super().__init__(logger)
[docs]
def build(self):
fields_to_grab = [
"tin",
"cust-num",
"prim-nm",
"fname",
"mi",
"lname",
"st-addr",
"city",
"state",
"zip",
"d-birth",
"h-phone",
"w-phone",
"c-phone",
"internet",
"dr-st",
"dr-lic",
]
xml = etree.tostring(
E.request(
E.cifinq(
E.bank(self.bank_id),
E.tin(self.ssn),
E.fields(",".join(fields_to_grab)),
)
),
encoding="unicode",
)
return xml
[docs]
def mock_response(self):
return mock_demo_info_response()