def validate_record(self, record): self.current_record = record errors = validate(self.record_valid, record) # Проверка на уникальность значений if record['N_ZAP'] in self.record_unique['N_ZAP']: errors['N_ZAP'] = [u'904;Значение не является уникальным'] self.record_unique['N_ZAP'].append(record['N_ZAP']) return handle_errors(errors, parent='ZAP', record_uid=record['N_ZAP'])
def validate_patient(self, patient): self.current_patient = patient errors = validate(self.patient_valid, patient) # Проверка на уникальность значений if patient['ID_PAC'] in self.patient_unique['ID_PAC']: errors['ID_PAC'] = [u'904;Значение не является уникальным'] self.patient_unique['ID_PAC'].append(patient['ID_PAC']) return errors
async def xkcd(ctx, number=None): """Grabs an XKCD comic, random if no number is supplied""" valid = True if number: valid = validate(number) if not valid: await ctx.send("Please give a valid number") return post = get_url(number) if number else get_random_url() await ctx.send(post)
async def set_threshold(ctx: commands.Context, number): valid = validate(number) if not valid: await ctx.send("Please give a valid number") return with open("settings.json", "r") as f: current = json.load(f) current["hall_of_fame_threshold"] = int(number) with open("settings.json", "w") as f: json.dump(current, f) await ctx.send("Threshold successfully set (will not affect old messages)")
def wrapper(): token_id = None explicit_id = None token = request.cookies.get("token") or "" if token: token_id = token_login(token) data = request.get_json() if data: explicit_id = data.get("id") # if there's an explicit_id, validate it using `type` if explicit_id and \ not valid.validate(explicit_id, type): explicit_id = None return func(token_id, explicit_id)
def main(data_dir: str = './data', epochs: int = 100, print_every: int = 1, gpu: bool = False, tbs: int = 64, vbs: int = 64, reshuffle_data: bool = False, nworkers: int = 2, lr: float = 0.001, wd: float = 1e-05, seed: int = 42, **kwargs): # Planting random seeds random.seed(seed) torch.manual_seed(seed) torch.cuda.manual_seed_all(seed) # Setting device logging.info('Setting device...') device = set_device(gpu) logging.info(f'Training on {str(device).upper()}.') # Getting data ready.. logging.info('Preparing dataloaders...') train_loader, val_loader = prepare_loaders(data_dir, tbs, vbs, reshuffle_data, nworkers) logging.info('Data is ready!') # Initilize model, loss, optimizer logging.info(f'Initializing model FooBar...') model = models.FooBar().to(device) loss_fn = torch.nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=lr, weight_decay=wd) # Train/val loop logging.info('Starting training...') for epoch in range(0, epochs): train_loss = train(model, train_loader, loss_fn, optimizer, device) val_loss = validate(model, val_loader, loss_fn, device) # Print some info on training process if (epoch % print_every == print_every - 1) or (epoch == 0): print( f'[{epoch + 1}/{epochs}] lr: {lr} | train_loss: {train_loss:.3f} | val_loss: {val_loss:.3f}' ) logging.debug('Training has finished!')
async def award(ctx, member: discord.Member, xp: int = 50): with open('users.json', 'r') as f: users = json.load(f) message = ctx.message # I don't know why, but this refuses to work valid = validate(str(xp)) if valid: await update_data(users, member) await add_experience(users, member, xp) await level_up(users, member, message) with open('users.json', 'w') as f: json.dump(users, f) await ctx.send(f'```Awarded {xp}xp to {member.name}```') else: await ctx.send('Please enter a valid number')
def validate_service(self, service): self.current_service = service errors = validate(self.service_valid, service) # Проверка на уникальность значений if service['IDSERV'] in self.service_unique['IDSERV']: errors['IDSERV'] = [u'904;Значение не является уникальным'] self.service_unique['IDSERV'].append(service['IDSERV']) h_errors = handle_errors(errors, parent='USL', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) if not CheckFunction.is_active_operation(service['CODE_USL']): h_errors += handle_errors({'CODE_USL': [u'904;Код услуги отсутствует в номенклатуре']}, parent='USL', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) # Проверка на соответсвтие кода услуги типу файла if not CheckFunction.is_service_corresponds_registry_type(service['CODE_USL'], self.registry_type): h_errors += handle_errors({'CODE_USL': [u'904;Услуга не соответсвует типу файла']}, parent='USL', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) # Проверка на соответствие кода услуги периоду if not CheckFunction.is_expired_service(service['CODE_USL'], self.current_event['DATE_2']): h_errors += handle_errors({'CODE_USL': [u'904;Код услуги не может быть применён в текущем периоде']}, parent='USL', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) # Проверка на соответствие кода услуги методу ВМП if self.registry_type == 2 and not CheckFunction.is_service_code_matching_hitech_method( service['CODE_USL'], self.current_event['METOD_HMP']): h_errors += handle_errors({'CODE_USL': [u'904;Код услуги не соответствует методу ВМП']}, parent='USL', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) # Проверка наличия уточнения в диагнозах if self.current_event['LPU'] != '280043' \ and not CheckFunction.is_disease_has_precision(service.get('DS', None)): h_errors += handle_errors({'DS': [u'904;Диагноз указан без уточняющей подрубрики']}, parent='USL', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) # Проверка на соответствие признака детского профиля услуги признаку детского профиля случая if self.registry_type in (1, 2) and \ not CheckFunction.is_service_children_profile_matching_event_children_profile( service.get('DET'), self.current_event.get('DET')): h_errors += handle_errors({'CODE_USL': [u'904;Признак детского профиля случая ' u'не совпадает с признаком детского профиля услуги']}, parent='USL', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) # Проверка на соответствие даты начала случая по диспансеризации с датой опроса if service['CODE_USL'] in ('019002', '19002') and service['DATE_IN'] != self.current_event['DATE_1']: h_errors += handle_errors({'DATE_1': [u'904;Дата начала случая диспансеризации не совпадает ' u'с датой начала услуги анкетирования']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid='') # Проверка на соответствие даты окончания случая по диспансеризации дате итогового приёма терапевта if service['CODE_USL'] in ('019021', '019023', '019022', '019024', '19021', '19023', '19022', '19024',) \ and service['DATE_OUT'] != self.current_event['DATE_2']: h_errors += handle_errors({'DATE_2': [u'904;Дата окончания случая диспансеризации не совпадает с ' u'датой окончания услуги приёма терапевта']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid='') # Проверка на соответствие кода услуги условиям оказания # Посещение в неотложной форме в приемном отделении стационара if self.current_event.get('USL_OK', '') in ('1', '2') \ and service.get('CODE_USL', '') in ('056066', '56066', '156066', '56066'): h_errors += handle_errors({'DATE_2': [u'904;Услуга не может оказываться в текущих условиях']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=self.current_event['IDCASE'], service_uid=service['IDSERV']) # Проверки на целостность случаев по поликлинике code_obj = CODES.get(service['CODE_USL'], None) if code_obj and self.current_event.get('USL_OK', '') == '3' and not service['CODE_USL'].startswith('A'): if code_obj.division_id: self.divisions_check_list.append(code_obj.division_id) if code_obj.reason_id: self.reasons_check_list.append(code_obj.reason_id) self.groups_check_list.append(code_obj.group_id) return h_errors
def validate_event(self, event): h_errors = [] if self.current_event: if len(set(self.divisions_check_list)) > 1: h_errors += handle_errors({'SLUCH': [u'904;В законченном случае обнаружены услуги с разными ' u'отделениями поликлиники.']}, parent='ZAP', record_uid=self.previous_record['N_ZAP'], event_uid=self.current_event['IDCASE']) if 19 not in self.groups_check_list and len(set(self.reasons_check_list)) > 1: h_errors += handle_errors({'SLUCH': [u'904;В законченном случае обнаружены поликлинические услуги ' u'с разной целью обращения/посещения.']}, parent='ZAP', record_uid=self.previous_record['N_ZAP'], event_uid=self.current_event['IDCASE']) if 19 in self.groups_check_list and len(set(self.groups_check_list)) > 1: h_errors += handle_errors({'SLUCH': [u'904;В законченном стоматологическом случае ' u'обнаружены услуги не относящиеся к стоматологии.']}, parent='ZAP', record_uid=self.previous_record['N_ZAP'], event_uid=self.current_event['IDCASE']) self.previous_record = self.current_record self.current_event = event self.divisions_check_list = [] self.reasons_check_list = [] self.groups_check_list = [] errors = validate(self.event_valid, event) # Проверка на уникальность значений if event['IDCASE'] in self.event_unique['IDCASE']: errors['IDCASE'] = [u'904;Значение не является уникальным'] self.event_unique['IDCASE'].append(event['IDCASE']) if event.get('USL_OK', '') in ['1', '2'] and self.registry_type == 1 \ and event.get('P_PER', '0') not in INCOMING_SIGNS: errors['P_PER'] = [u'904;Значение не соответствует справочному.'] if event.get('USL_OK', '') in ['1', '2'] and event.get('P_PER', '0') == '0' and self.registry_type == 1: errors['P_PER'] = [u'902;Отсутствует обязательное значение.'] h_errors += handle_errors(errors, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) # Проверка на соостветствие вида помощи усуловию оказания if not CheckFunction.is_event_kind_corresponds_term(event.get('VIDPOM', None), event.get('USL_OK', None)): h_errors += handle_errors( {'SLUCH': [u'904;Указанный вид помощи не может быть оказанным в текущих условиях']}, parent='ZAP', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) # Проверка на соостветствие результата диспансеризации комментарию if self.registry_type in (3, 4) and not CheckFunction.is_examination_result_matching_comment( event.get('RSLT_D'), event.get('COMENTSL')): h_errors += handle_errors( {'RSLT_D': [u'904;Указанный код результата диспансеризации не совпадает с указанным комментарием']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) if self.registry_type == 1: # Проверка КСГ if event.get('USL_OK', '') in ('1', '2') and not event.get('KSG_MO', None): h_errors += handle_errors( {'KSG_MO': [u'902;Отсутствует обязательное значение.']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) if event.get('KSG_MO', None) and \ ((event.get('USL_OK', '') == '1' and event.get('KSG_MO', None) not in HOSPITAL_KSGS) or (event.get('USL_OK', '') == '2' and event.get('KSG_MO', None) not in DAY_HOSPITAL_KSGS)): h_errors += handle_errors( {'KSG_MO': [u'904;Значение не соответствует справочному.']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) # Проверка наличия уточнения в диагнозах if event['LPU'] != '280043': if not CheckFunction.is_disease_has_precision(event.get('DS0', None)): h_errors += handle_errors( {'DS0': [u'904;Диагноз указан без уточняющей подрубрики']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) if not CheckFunction.is_disease_has_precision(event.get('DS1', None)): h_errors += handle_errors( {'DS1': [u'904;Диагноз указан без уточняющей подрубрики']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) concomitants = event.get('DS2', []) if type(concomitants) != list: concomitants = [concomitants] for disease in concomitants: if not CheckFunction.is_disease_has_precision(disease): h_errors += handle_errors( {'DS2': [u'904;Диагноз указан без уточняющей подрубрики']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) complicateds = event.get('DS3', []) if type(complicateds) != list: complicateds = [complicateds] for disease in complicateds: if not CheckFunction.is_disease_has_precision(disease): h_errors += handle_errors( {'DS3': [u'904;Диагноз указан без уточняющей подрубрики']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) # Проверка лекарственных препаратов medicine_valid = { 'CODE_LP': [_required, _in(MEDICINES)], 'NAME_LP': _required } medicines = event.get('LEKPREP', []) if type(medicines) != list: medicines = [medicines] for medicine in medicines: h_errors += handle_errors(validate(medicine_valid, medicine), parent='LEKPREP', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) if self.registry_type in (10, 9, 8, 7, 6, 5, 4, 3): # Проверка сопутствующих заболеваний exam_concomitants_valid = { 'DS2': [_required, _in(DISEASES)], 'DS2_PR': _in(['0', '1']) } exam_concomitant_diseases = event.get('DS2_N', []) if type(exam_concomitant_diseases) != list: exam_concomitant_diseases = [exam_concomitant_diseases] for disease in exam_concomitant_diseases: h_errors += handle_errors(validate(exam_concomitants_valid, disease), parent='DS2_N', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) if not CheckFunction.is_disease_has_precision(disease.get('DS2', None)): h_errors += handle_errors( {'DS2_N': [u'904;Диагноз указан без уточняющей подрубрики']}, parent='DS2_N', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) # Проверка назначения после присвоения группы здоровья, кроме I и II health_group = HealthGroup.get_health_group(self.registry_type, event.get('COMENTSL', '') or '') is_required_appointment = False if health_group not in ('0', '1', '2') or event.get('RSLT_D', '0') in ('3', '4', '5', '31', '32'): is_required_appointment = True if event.get('RSLT_D', '0') in ('6', '11', '12', '13', '14', '15'): is_required_appointment = False if is_required_appointment: appointments = event.get('NAZR', []) if not appointments: h_errors += handle_errors({'NAZR': [u'902;Отсутствует обязательное значение для ' u'группы здоровья %s, рассчитанной из комментария случая (%s) ' u'и результата диспансеризации %s.' % (health_group, event.get('COMENTSL', '') or '', event.get('RSLT_D', '0'))]}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) if type(appointments) != list: appointments = [appointments] appointment_valid = { 'NAZ_SP': {'check': None, 'valid': SPECIALITIES_NEW}, 'NAZ_V': {'check': None, 'valid': EXAMINATION_KINDS}, 'NAZ_PMP': {'check': None, 'valid': PROFILES}, 'NAZ_PK': {'check': None, 'valid': BED_PROFILES}, } for direction_type in appointment_valid: check_values = event.get(direction_type, []) if type(check_values) != list: check_values = [check_values] appointment_valid[direction_type]['check'] = check_values direction_type = None for appointment in appointments: if appointment in ['1', '2']: direction_type = 'NAZ_SP' elif appointment == '3': direction_type = 'NAZ_V' elif appointment in ['4', '5']: direction_type = 'NAZ_PMP' elif appointment == '6': direction_type = 'NAZ_PK' else: h_errors += handle_errors( {'NAZR': [u'904;Значение не соответствует справочному для ' u'группы здоровья %s, рассчитанной из комментария случая (%s) ' u'и результата диспансеризации %s.' % (health_group, event.get('COMENTSL', '') or '', event.get('RSLT_D', '0'))]}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) if direction_type: valid_values = appointment_valid[direction_type]['valid'] check_values = appointment_valid[direction_type]['check'] if not check_values: h_errors += handle_errors( {direction_type: [u'902;Отсутствует обязательное значение.']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) for value in check_values: if value not in valid_values: h_errors += handle_errors( {direction_type: [u'904;Значение не соответствует справочному.']}, parent='SLUCH', record_uid=self.current_record['N_ZAP'], event_uid=event['IDCASE']) return h_errors
def validate_patient_policy(self, patient_policy): return handle_errors(validate(self.policy_valid, patient_policy), parent='PACIENT', record_uid=self.current_record['N_ZAP'])
def validate_header(self, header): return validate(self.header_valid, header)
# Parameters valid_img_height = config.VALID.img_height valid_img_width = config.VALID.img_width if __name__ == '__main__': import argparse parser = argparse.ArgumentParser() parser.add_argument('--mode', type=str, default='train', help='Running process') parser.add_argument('--img_height', type=int, default=1080, help='Height of images') parser.add_argument('--img_width', type=int, default=1920, help='Width of images') args = parser.parse_args() if args.mode == 'train': training() elif args.mode == 'valid': validate(valid_ldr_dir, valid_hdr_dir, valid_gen_dir, logs_valid, valid_img_height, valid_img_width) elif args.mode == 'test': testing(test_ldr_dir, test_gen_dir, logs_test, args.img_height, args.img_width, 500) else: raise Exception("Unknown mode")