import logging
from lxml import etree
from q2_sdk.models.cores.queries.base_query import BaseQuery
from q2_cores.OSI.queries import mock_responses
[docs]
class DemographicInfoQuery(BaseQuery):
"""Returns addresses, First/Last Name, Phones, etc for an OSI Entity"""
def __init__(
self,
logger: logging.Logger,
access_number: str,
pin: str,
use_code: int,
max_rows: int = 100,
):
self.access_number = access_number
self.pin = pin
self.use_code = use_code
self.max_rows = max_rows
super().__init__(logger)
[docs]
def build(self):
root = etree.Element("PROCREQ", PROC="1420")
etree.SubElement(root, "ACCESS_NBR").text = str(self.access_number)
etree.SubElement(root, "PIN").text = str(self.pin)
etree.SubElement(root, "SOURCE").text = "WWW"
etree.SubElement(root, "UC").text = str(self.use_code)
etree.SubElement(root, "MAXROWS").text = str(self.max_rows)
# Theoretically this can be either PERS or ORG, but the OSI documetation
# says only PERS works, so...
etree.SubElement(root, "ENTITY_TYPE").text = "PERS"
xml_as_bytes = b"96\t" + etree.tostring(root)
return xml_as_bytes.decode()
[docs]
def mock_response(self):
return mock_responses.mock_demographic_response()