示例#1
0
 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 = {}
示例#2
0
 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 = {}
示例#3
0
 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]
示例#4
0
 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 = []
示例#5
0
 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')
示例#6
0
 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)
示例#7
0
 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')
示例#8
0
 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 = {}
示例#9
0
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))
示例#10
0
    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
示例#11
0
    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])
示例#12
0
 def __init__(self):
     self.config = natus_config.NATUSConfig('ncqa')
     self.log = natus_logging.NATUSLogging(self.__class__.__name__,
                                           logging.INFO)
示例#13
0
 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')