def required_exclusions(context: Context) -> None: if context.member.age >= 66: if context.long_term_institution or context.enrolled_in_snp: context.required_exclusion = True elif context.frailty and (context.advanced_illness or context.on_dementia_meds): context.required_exclusion = True
def init_visits(member: dict, context: Context) -> None: if 'visits' in member: for visit in member['visits']: if visit['ServiceDate'] is None: continue context.add_encounter(visit)
def enrollments(self, context: Context) -> None: accumulator = {} for enrollment in context.enrollments: # check anchor date if self.anchor_date in enrollment.dates: context.anchor_date_eligibility = True # check snp enrollment if not enrollment.dates.intersection(self.measurement_year_date_range).empty \ and enrollment.payer in ['SN1', 'SN2', 'SN3']: context.enrolled_in_snp = True if not enrollment.dates.intersection( self.eligible_date_range).empty: for ce_date_range in self.ce_date_ranges: ce_intersection = ce_date_range.intersection( enrollment.dates) if not ce_intersection.empty: year = ce_intersection[0].year if year in accumulator: accumulator[ year] = accumulator[year] & ce_intersection else: accumulator[year] = ce_intersection context.gaps_in_care = self.gaps_in_care(accumulator)
def init_member(member: dict, context: Context) -> None: from model.member import Member from util import natus_util context.reset() member_id = member['MemberId'] age = natus_util.age(member['DOB'], context.run_date) is_female = True if member['Gender'] == 'F' else False context.member = Member(member_id, age, is_female)
def start(self, member_id: str): ctx = Context(self.run_date) if member_id: self.process_member( self.db_con.find('MemberId', member_id, 'member'), ctx) else: for member in self.db_con.read('member'): self.process_member(member, ctx)
def visit(self, context: Context) -> None: outpatient_visit_counter = 0 inpatient_visit_counter = 0 optional_excl = optional_exclusions.OptionalExclusions() for visit in context.visits: self.had_bilateral_mastectomy(visit, context, optional_excl) if visit.service_date.year == context.run_date.year \ and bool(set(visit.codes).intersection(self.frailty_codes)): context.frailty = True # TODO non acute encounter on different dates if visit.service_date.year in [ context.run_date.year, context.run_date.year - 1 ]: if (bool(self.outpatient_codes.intersection(visit.codes)) or bool( self.observation_codes.intersection(visit.codes)) or bool(self.ed_codes.intersection(visit.codes)) or bool( self.non_acute_inpatient_codes.intersection( visit.codes))): if bool( self.advanced_illness_codes.intersection( visit.codes)): outpatient_visit_counter += 1 if (bool(self.acute_inpatient_codes.intersection(visit.codes)) and bool( self.advanced_illness_codes.intersection( visit.codes))): inpatient_visit_counter += 1 if not optional_excl.empty(): context.optional_exclusions = self.optional_exclusions( optional_excl) if outpatient_visit_counter >= 2 or inpatient_visit_counter >= 1: context.advanced_illness = True
def dementia_meds(context: Context) -> None: if context.pharm: service_year = context.pharm.service_date.year if service_year in [ context.run_date.year, context.run_date.year - 1 ]: for med_name in context.pharm.dispensed_med_name: med_name_lower = med_name.lower() if 'donepezil' in med_name_lower or 'galantamine' in med_name_lower or \ 'rivastigmine' in med_name_lower or 'memantine' in med_name_lower: context.on_dementia_meds = True
def fromXml(self, tree): self._tree = tree root = tree self.tasks = dict() self.tasks_tree = dict() self.folders = dict() self.folders_tree = dict() self.contexts = dict() self.contexts_tree = dict() for e in root: tag = extract_tag(e.tag) if tag == 'task': task = Task() task.fromXmlNode(e) self.tasks[task.id] = task parent = task.parentRef or task.folderRef or "/" if not parent in self.tasks_tree: self.tasks_tree[parent] = [] self.tasks_tree[parent].append(task) elif tag == 'folder': folder = Folder() folder.fromXmlNode(e) self.folders[folder.id] = folder parent_folder = folder.parentRef or "/" if not parent_folder in self.folders_tree: self.folders_tree[parent_folder] = [] self.folders_tree[parent_folder].append(folder) elif tag == 'context': context = Context() context.fromXmlNode(e) self.contexts[context.id] = context parent_ctx = context.parentRef or "/" if not parent_ctx in self.contexts_tree: self.contexts_tree[parent_ctx] = [] self.contexts_tree[parent_ctx].append(context)
from pyignite import Client from cache.instance_data import PerperInstanceData from cache.stream_data import StreamData from model.state import State from model.context import Context from services.serializer import Serializer serializer = Serializer() ignite = Client() ignite.connect('localhost', 10800) ignite.register_binary_type(StreamData) instance = PerperInstanceData(ignite, serializer) state = State(instance, ignite, serializer) context = Context(instance, None, state, ignite) context.stream_action() print("Reading stream") print(ignite.get_cache_names()) streams_cache = ignite.get_cache("streams") for el in streams_cache.scan(): print(el)
def mmdf(self, context: Context) -> None: for mmdf in context.mmdf: if mmdf.run_date in self.measurement_year_date_range and mmdf.lti_flag: context.long_term_institution = True
def age_eligible(self, context: Context) -> None: context.age_eligibility = eval(self.age_rule)
def init_mmdf(member: dict, context: Context) -> None: if 'HospiceLti' in member: mmdfs = member['HospiceLti'] for mmdf in mmdfs: context.add_mmdf(mmdf)
def init_pharm(member: dict, context: Context) -> None: if 'pharm' in member: pharm = member['pharm'] context.add_pharm(pharm)
def init_enrollments(member: dict, context: Context): member_enrollments = member['enrollments'] for member_enrollment in member_enrollments: context.add_enrollment(member_enrollment)