Source code for q2_cores.OSI.queries.demographic_info_query

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()