def __init__(self): self.config = natus_config.NATUSConfig('ncqa') self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO) self.mmdf_file_glob = glob.glob( self.config.read_value('setup', 'mmdf.input.filename.regex')) self.mmdf = {}
def __init__(self): self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO) self.config = natus_config.NATUSConfig('ncqa') self.db_con = connector.Connector() self.member_filter = {} # self.load_filter() self.value_set_cache = {}
def __init__(self): self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO) self.config = natus_config.NATUSConfig('ncqa') self.dbname = self.config.read_value('db', 'mongodb.db.name') self.url = self.config.read_value('db', 'mongodb.url') self.log.info('Connecting to mongodb. db: ' + self.dbname + ', url: ' + self.url) self.client = pymongo.MongoClient(self.url) self.db = self.client[self.dbname]
def __init__(self): self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO) self.config = natus_config.NATUSConfig('ncqa') self.db_connection = connector.Connector() self.bulk_size = self.config.read_value('load', 'bulk.size') self.input_file_name = self.config.read_value('load', 'input.filename') self.documents = []
def __init__(self): self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO) self.config = natus_config.NATUSConfig('ncqa') self.db_con = connector.Connector() self.db_con.collection_name = 'measure_to_oid' self.excel_sheetname = self.config.read_value( 'valueset', 'excel.measures.valuesets.sheet.name') self.excel_filename = self.config.read_value('valueset', 'excel.filename')
def __init__(self, run_date: datetime): config = natus_config.NATUSConfig('ncqa') config_section_name = self.__class__.__name__ self.log = natus_logging.NATUSLogging(config_section_name, logging.INFO) self.run_date = run_date measures = json.loads( config.read_value(config_section_name, 'measures')) self.db_con = connector.Connector() self.measure_pipeline = self.init_measures(measures)
def __init__(self): self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO) self.config = natus_config.NATUSConfig('ncqa') self.db_con = connector.Connector() self.db_con.collection_name = 'code_to_description' self.excel_sheetname = self.config.read_value('valueset', 'excel.sheetname') self.excel_filename = self.config.read_value('valueset', 'excel.filename') self.cpt_input_file = self.config.read_value('cms', 'cpt_input_file')
def __init__(self): self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO) self.config = natus_config.NATUSConfig('ncqa') self.merged_member_filename = self.config.read_value('merge', 'merged.member.filename') self.members_input_filename = self.config.read_value('merge', 'members.input.filename') self.filter_output_filename = self.config.read_value('merge', 'filter.output.filename') self.run_date = datetime.now() self.enrollments = {} self.visits = {} self.providers = {} self.pharm = {} self.mmdf = {}
def vs_to_codes(): from util import natus_config import pandas as pd from model.code import Code from model.valueset import ValueSet from db.mongo import connector import json config = natus_config.NATUSConfig('ncqa') excel_filename = config.read_value('valueset', 'excel_filename') sheet_name = config.read_value('valueset', 'excel_sheet_name') print('Reading ' + excel_filename) df = pd.read_excel( excel_filename, sheet_name=sheet_name ) print('Processing ' + sheet_name) value_set_info = None codes_processed = set() db_con = connector.Connector() for index, row in df.iterrows(): vs_name = row['Value Set Name'] code = row['Code'] code_system = row['Code System'] code_system_oid = row['Code System OID'] code_info = Code(code, code_system, code_system_oid) if vs_name not in codes_processed: if len(codes_processed) > 0: db_con.insert(vars(value_set_info), 'vs_to_codes') codes_processed.add(vs_name) vs_oid = row['Value Set OID'] value_set_info = ValueSet(vs_name, vs_oid, [vars(code_info)]) else: value_set_info.codes.append(vars(code_info))
def __init__(self, logger_name: str, level: int, destination: int = DESTINATION_PY_LOGGING): from fluent import handler self.config = natus_config.NATUSConfig('ncqa') self.destination = destination self.log = logging.getLogger(logger_name) self.log.setLevel(level) if self.destination == DESTINATION_PY_LOGGING: ch = logging.StreamHandler() formatter = logging.Formatter( self.config.read_value('log', 'py.log.format')) ch.setFormatter(formatter) self.log.addHandler(ch) elif self.destination == DESTINATION_FLUENTD_MONGODB: self.handler = handler.FluentHandler( logger_name, host=self.config.read_value('log', 'fluentd.hostname'), port=int(self.config.read_value('log', 'fluentd.forward.port')), ) custom_format = { 'host': '%(hostname)s', 'where': '%(module)s.%(funcName)s', 'type': '%(levelname)s', 'stack_trace': '%(exc_text)s' } formatter = handler.FluentRecordFormatter(custom_format) self.handler.setFormatter(formatter) self.log.addHandler(self.handler) else: print('Unrecognized log destination') raise ValueError
def __init__(self, run_date: datetime, connection: connector.Connector): from util import natus_util from pandas import date_range config = natus_config.NATUSConfig('ncqa') # shorthand notation config_section_name = self.__class__.__name__ # self.codes = natus_util.measure_to_codes(config_section_name, connection) self.anchor_date = eval( config.read_value(config_section_name, 'anchor_date')) continuous_enrollment_config = eval( config.read_value(config_section_name, "continuous.enrollment")) self.measurement_year_date_range = eval( config.read_value(config_section_name, 'measurement_year_date_range')) self.prior_measurement_year_date_range = eval( config.read_value(config_section_name, 'prior_measurement_year_date_range')) self.continuous_enrollment = natus_util.continuous_enrollment( continuous_enrollment_config) self.age_rule = config.read_value(config_section_name, 'age_rule') self.eligible_date_range = eval( config.read_value(config_section_name, 'date_range')) self.ce_date_ranges = eval( config.read_value(config_section_name, 'ce_date_ranges')) self.ce_allowable_gaps = eval( config.read_value(config_section_name, 'ce_allowable_gaps')) self.ce_year_to_idx = eval( config.read_value(config_section_name, 'ce_year_to_idx')) self.outpatient = connection.find('vs_name', 'Outpatient', 'vs_to_codes')['codes'] # intersection with visit codes self.outpatient_codes = set([x['code'] for x in self.outpatient]) self.observation = connection.find('vs_name', 'Observation', 'vs_to_codes')['codes'] self.observation_codes = set([x['code'] for x in self.observation]) self.frailty = connection.find('vs_name', 'Frailty', 'vs_to_codes')['codes'] self.frailty_codes = [x['code'] for x in self.frailty] self.non_acute_inpatient = connection.find('vs_name', 'Nonacute Inpatient', 'vs_to_codes')['codes'] self.non_acute_inpatient_codes = set( [x['code'] for x in self.non_acute_inpatient]) self.acute_inpatient = connection.find('vs_name', 'Acute Inpatient', 'vs_to_codes')['codes'] self.acute_inpatient_codes = set( [x['code'] for x in self.acute_inpatient]) self.advanced_illness = connection.find('vs_name', 'Advanced Illness', 'vs_to_codes')['codes'] self.advanced_illness_codes = set( [x['code'] for x in self.advanced_illness]) self.ed = connection.find('vs_name', 'ED', 'vs_to_codes')['codes'] self.ed_codes = set([x['code'] for x in self.ed]) self.bilateral_mastectomy = connection.find('vs_name', 'Bilateral Mastectomy', 'vs_to_codes')['codes'] self.bilateral_mastectomy_codes = [ x['code'] for x in self.bilateral_mastectomy ] self.unilateral_mastectomy = connection.find('vs_name', 'Unilateral Mastectomy', 'vs_to_codes')['codes'] self.unilateral_mastectomy_codes = [ x['code'] for x in self.unilateral_mastectomy ] self.bilateral_modifier = connection.find('vs_name', 'Bilateral Modifier', 'vs_to_codes')['codes'] self.right_modifier = connection.find('vs_name', 'Right Modifier', 'vs_to_codes')['codes'] self.left_modifier = connection.find('vs_name', 'Left Modifier', 'vs_to_codes')['codes'] self.history_of_bilateral_mastectomy = connection.find( 'vs_name', 'History of Bilateral Mastectomy', 'vs_to_codes')['codes'] self.history_of_bilateral_mastectomy_codes = [ x['code'] for x in self.history_of_bilateral_mastectomy ] self.absence_of_right_breast = connection.find( 'vs_name', 'Absence of Right Breast', 'vs_to_codes')['codes'] self.absence_of_left_breast = connection.find( 'vs_name', 'Absence of Left Breast', 'vs_to_codes')['codes'] self.unilateral_mastectomy_right = connection.find( 'vs_name', 'Unilateral Mastectomy Right', 'vs_to_codes')['codes'] self.unilateral_mastectomy_right_codes = set( [x['code'] for x in self.unilateral_mastectomy_right]) self.unilateral_mastectomy_left = connection.find( 'vs_name', 'Unilateral Mastectomy Left', 'vs_to_codes')['codes'] self.unilateral_mastectomy_left_codes = set( [x['code'] for x in self.unilateral_mastectomy_left])
def __init__(self): self.config = natus_config.NATUSConfig('ncqa') self.log = natus_logging.NATUSLogging(self.__class__.__name__, logging.INFO)
def __init__(self): self.log = natus_logging.NATUSLogging(__class__.__name__, logging.INFO) self.config = natus_config.NATUSConfig('ncqa') self.db_con = connector.Connector() self.input_filename = self.config.read_value('ndc', 'input.csv.filename')