def search_family_data(): try: args = request.json data = [] log = {} log['request'] = args if not args['phone_no'] and not args['husband_name'] and not args['name']: sql = """ SELECT * FROM rch_users ORDER BY time_created DESC LIMIT 5; """ rch_recs = session.query(RCHUser).from_statement(text(sql)).all() else: sql = """ SELECT * FROM rch_users WHERE (phone_no_1 LIKE :phone_no OR name LIKE :name OR husband_name LIKE :husband_name) """ rch_recs = session.query(RCHUser).from_statement(text(sql)).params(args).all() for rch_rec in rch_recs: data_obj = {} data_obj["record_unique_id"] = rch_rec.uid data_obj["pregnant_woman_name"] = rch_rec.name data_obj["husband_name"] = rch_rec.husband_name data_obj["address"] = rch_rec.address data_obj["pregnant_woman_dob"] = date_to_string(rch_rec.dob) data_obj["phone_number"] = rch_rec.phone_no_1 data.append(data_obj) record = {'status_code': 200,'status_msg': "Success","family_details":data} except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_search_family_data.insert_one(log) return jsonify(record)
def children_data(): args = request.json log = {} log['request'] = args try: unique_id = args['data']['record_unique_id'] rch_user = session.query(RCHUser).filter(RCHUser.uid == unique_id).first() if rch_user: child_recs = session.query(Child).filter(Child.rch_user_id == rch_user.id,Child.deleted==False).all() response_data = [] for child_rec in child_recs: preg_rec = session.query(PregnancyDetail).filter(PregnancyDetail.id == child_rec.pregnancy_detail_id).first() rec = {} rec['name'] = child_rec.name rec['dob'] = date_to_string(child_rec.date_of_birth) rec['rch_id'] = child_rec.rch_id rec['deleted'] = child_rec.deleted rec['woman_name'] = rch_user.name rec['record_pregnancy_id'] = preg_rec.pregnancy_id response_data.append(rec) record = {'status_code': 200, "status_msg": "Success","data":response_data} else: record = {'status_code': 404, "status_msg": "Mother record not found."} except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_children_data.insert_one(log) return jsonify(record)
def start_scheduler(): try: logger.info("Automation has started...") scheduler = SafeScheduler() scheduler.every().day.do(save_to_canada) scheduler.every().day.do(save_to_australia) scheduler.every().day.do(save_to_new_zealand) scheduler.every().day.do(save_to_UK) scheduler.every().day.do(find_all_ireland) scheduler.every().day.do(save_to_united_states) scheduler.every().day.do(save_to_SG) scheduler.every().day.do(save_to_MU) scheduler.every().day.do(save_to_central_america) scheduler.every().day.do(save_to_caribbea) scheduler.every().day.do(save_to_unsafe_areas) scheduler.every().day.do(save_drug_law) scheduler.every().day.do(parse_all_countries_vaccine) while True: scheduler.run_pending() time.sleep(1) except: scheduler.keep_running = False e = traceback.format_exc() send_email(e) logger.error( "Automation has stopped running due to the following reason: \n %s", e)
def beneficiary_data(): try: data = [] log = {} log['request'] = {} rch_recs = session.query(RCHUser).all() for rch_rec in rch_recs: data_obj = {} data_obj["record_unique_id"] = rch_rec.uid data_obj["pregnant_woman_name"] = rch_rec.name data_obj["husband_name"] = rch_rec.husband_name data_obj["address"] = rch_rec.address data_obj["pregnant_woman_dob"] = date_to_string(rch_rec.dob) data_obj["phone_number"] = rch_rec.phone_no_1 data.append(data_obj) if data: record = {'status_code': 200,'status_msg': "Success","data":data} else: record = {'status_code': 200,'status_msg': "No records found","data":[]} except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_beneficiary_data.insert_one(log) return jsonify(record)
def male_female_count(): try: args = request.json log = {} log['request'] = args station_id = args['station_id'] from_str = custom_functions.obj_to_date( args['date_from']).split(" ")[0] to_str = custom_functions.obj_to_date(args['date_to'], extra_day=1).split(" ")[0] select_query = "SELECT beneficiary_id,vaccine_dose_id FROM kba.immunisation_log WHERE \ station_id='{}' AND current_date >= '{}' AND current_date <= '{}' allow filtering;" vaccine_doses = session.query(VaccineDose).all() vd_obj = {} for vd in vaccine_doses: vd_obj[vd.id] = vd.name sub_logs = cassandra_client.session.execute( select_query.format(station_id, from_str, to_str)) result = {} for sub_log in sub_logs: r = session.query(Child).filter( Child.rch_id == sub_log.beneficiary_id).first() if r: if not vd_obj[sub_log.vaccine_dose_id] in result: result[vd_obj[sub_log.vaccine_dose_id]] = {} result[vd_obj[sub_log.vaccine_dose_id]]['male'] = 0 result[vd_obj[sub_log.vaccine_dose_id]]['female'] = 0 result[vd_obj[sub_log.vaccine_dose_id]]['total'] = 0 result[vd_obj[sub_log.vaccine_dose_id]][ 'dose_name'] = vd_obj[sub_log.vaccine_dose_id] result[vd_obj[sub_log.vaccine_dose_id]]['total'] = result[ vd_obj[sub_log.vaccine_dose_id]]['total'] + 1 if r.gender.lower() == 'm': result[vd_obj[sub_log.vaccine_dose_id]]['male'] = result[ vd_obj[sub_log.vaccine_dose_id]]['male'] + 1 elif r.gender.lower() == 'f': result[vd_obj[sub_log.vaccine_dose_id]]['female'] = result[ vd_obj[sub_log.vaccine_dose_id]]['female'] + 1 result_list = list(result.values()) sorted(result_list, key=lambda i: i['dose_name']) if result_list: record = {'status_code': 200, 'data': result_list} else: record = { 'status_code': 404, "status_msg": "No data found.", 'data': result_list } except Exception as e: session.rollback() error_email.send_email({'error': str(e), 'url': request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_male_female_count.insert_one(log) return jsonify(record)
def beneficiary_report(): try: args = request.json log = {} log['request'] = args station_id = args['station_id'] from_str = custom_functions.obj_to_date( args['date_from']).split(" ")[0] to_str = custom_functions.obj_to_date(args['date_to'], extra_day=1).split(" ")[0] select_query = "SELECT beneficiary_id,vaccine_dose_id FROM kba.immunisation_log WHERE \ station_id='{}' AND current_date >= '{}' AND current_date <= '{}' allow filtering;" vaccine_doses = session.query(VaccineDose).all() vd_obj = {} for vd in vaccine_doses: vd_obj[vd.id] = vd.name sub_logs = cassandra_client.session.execute( select_query.format(station_id, from_str, to_str)) obj = {} for sub_log in sub_logs: r = session.query(Child).filter( Child.rch_id == sub_log.beneficiary_id).first() rch_user = session.query(RCHUser).filter( RCHUser.id == r.rch_user_id).first() if r and rch_user: if not sub_log.beneficiary_id in obj: obj[sub_log.beneficiary_id] = {} obj[sub_log.beneficiary_id]['child_name'] = r.name obj[sub_log.beneficiary_id]['mother_name'] = rch_user.name obj[sub_log. beneficiary_id]['dob'] = custom_functions.date_to_string( r.date_of_birth) obj[sub_log.beneficiary_id]['address'] = rch_user.address obj[sub_log.beneficiary_id]['gender'] = r.gender.upper() obj[sub_log.beneficiary_id]['vaccine'] = vd_obj[ sub_log.vaccine_dose_id] if (not ( 'vaccine' in obj[sub_log.beneficiary_id])) else obj[ sub_log.beneficiary_id]['vaccine'] + ", " + vd_obj[ sub_log.vaccine_dose_id] result_list = list(obj.values()) if result_list: record = {'status_code': 200, 'data': result_list} else: record = { 'status_code': 404, "status_msg": "No data found.", 'data': result_list } except Exception as e: session.rollback() error_email.send_email({'error': str(e), 'url': request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_beneficiary_report.insert_one(log) return jsonify(record)
def edit_beneficiary_pregnancy(): try: args = request.json log = {} log['request'] = args preg_rec = session.query(PregnancyDetail).filter(PregnancyDetail.pregnancy_id == args["data"]["record_pregnancy_id"]).first() if preg_rec: rch_rec = session.query(RCHUser).filter(RCHUser.id == preg_rec.rch_user_id).first() child_recs = session.query(Child).filter(Child.pregnancy_detail_id == preg_rec.id,Child.deleted==False).all() data = {} data["phone_no"]=preg_rec.phone_no data["drivers_number"] =preg_rec.drivers_number data["menstruation_date"]=date_to_string(preg_rec.menstruation_date) data["expected_delivery_date"]=date_to_string(preg_rec.expected_delivery_date) data["blood_group"]=preg_rec.blood_group data["last_delivery_date"]=date_to_string(preg_rec.last_delivery_date) data["rsby_reg_number"] =preg_rec.rsby_reg_number data["jsy_reg_number"] =preg_rec.jsy_reg_number data["gravida"]=preg_rec.gravida data["para"]=preg_rec.para data["no_of_live_children"]=preg_rec.no_of_live_children data["no_of_abortions"]=preg_rec.no_of_abortions data["tt1_date"]=date_to_string(preg_rec.tt1_date) data["tt2_date"]=date_to_string(preg_rec.tt2_date) data["usg1_date"]=date_to_string(preg_rec.usg1_date) data["usg2_date"]=date_to_string(preg_rec.usg2_date) data["usg3_date"]=date_to_string(preg_rec.usg3_date) data["important_findings"] =preg_rec.important_findings data["complication_details"] =preg_rec.complication_details data["heart_complications"] =preg_rec.heart_complications data["child_data"] = [] for cr in child_recs: obj = {} obj["rch_id"] = cr.rch_id obj["name"] = cr.name obj["gender"] = cr.gender obj["deleted"] = cr.deleted obj["dob"] = date_to_string(cr.date_of_birth) data["child_data"].append(obj) data["advice"] =preg_rec.advice data["referrals"] =preg_rec.referrals data["contraceptive_methods_used"] =preg_rec.contraceptive_methods_used data["rh_category"] =preg_rec.rh_category data["previous_delivery"]=preg_rec.previous_delivery data["record_unique_id"] = rch_rec.uid record = {'status_code': 200,'status_msg': "Success","pregnancy_details":data} else: record = {'status_code': 200,'status_msg': "No records found","data":[]} except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_edit_beneficiary_pregnancy.insert_one(log) return jsonify(record)
def get(self): """ Documentation Params: var1: required var2: required Returns: JSON dict """ parser = reqparse.RequestParser() parser.add_argument('vaccine_batch_id', type=str, required=True, help="Package ID is required") args = parser.parse_args() try: log = {} log['request'] = args package_id = args['vaccine_batch_id'] select_query = "SELECT * FROM kba.vaccine_sub_log WHERE id={};" data_rec = cassandra_client.session.execute(select_query.format(package_id)) if data_rec: if data_rec[0].dose_count > 0: data = {} data['uuid'] = str(data_rec[0].id) data['date_time'] = custom_functions.date_to_string(data_rec[0].date_time) data['dose_count'] = data_rec[0].dose_count data['from_station'] = dict(data_rec[0].previous_station) data['to_station'] = dict(data_rec[0].current_station) data['manufacturer_info'] = data_rec[0].manufacturer_info data['comments'] = data_rec[0].comments data['adjustments'] = {'doses': data_rec[0].transit_loss, 'remarks': data_rec[0].transit_remark} data['manufacturing_date'] = custom_functions.date_to_string(data_rec[0].manufacturing_date) data['expiry_date'] = custom_functions.date_to_string(data_rec[0].expiry_date) data['name'] = data_rec[0].name data['package_id'] = data_rec[0].package_id data['package_type_id'] = '1'#data_rec[0].package_type_id data['previous_uuid'] = str(data_rec[0].previous_uuid) data['status'] = data_rec[0].status data['validation'] = True#data_rec[0].status record = {'status_code': 200,'status_msg': "Success", 'data':data} else: record = {'status_code': 404, 'status_msg': "Vaccine Count for this package is 0."} else: record = {'status_code': 404,'status_msg': "Vaccine not found."} except Exception as e: error_email.send_email({'error':str(e),'url':'/immunization/get'}) record = {'status_code': 500,'status_msg': "API Failed.", 'msg':str(e)} log['response'] = record ml_immunisation_get.insert_one(log) return record
def edit_beneficiary_family(): try: args = request.json log = {} log['request'] = args rch_rec = session.query(RCHUser).filter(RCHUser.uid == args["data"]["record_unique_id"]).first() if rch_rec: preg_recs = session.query(PregnancyDetail).filter(PregnancyDetail.rch_user_id == rch_rec.id).all() record_pregnancy_ids = [] for p in preg_recs: record_pregnancy_ids.append(p.pregnancy_id) data = {} data["woman_name"]= rch_rec.name data["woman_dob"]= date_to_string(rch_rec.dob) data["woman_age"]= rch_rec.age data["husband_name"]= rch_rec.husband_name data["husband_dob"]= date_to_string(rch_rec.husband_dob) data["husband_age"]= rch_rec.husband_age data["address"]= rch_rec.address data["phone_no"]= rch_rec.phone_no_1 data["phone_no_1"]= rch_rec.phone_no_2 data["family_registration_number"]= rch_rec.family_reg_no data["mother_education"]= rch_rec.mother_education data["unique_id"]= rch_rec.unique_id data["aadhar_id"]= rch_rec.aadhar_id data["income"]= rch_rec.income data["caste"]= rch_rec.caste data["ec_no"]= rch_rec.ec_no data["apl_bpl"]= rch_rec.apl_bpl data["bank_account_number"]= rch_rec.bank_account_number data["ifsc_code"]= rch_rec.ifsc_code data["category"]= rch_rec.category data["record_pregnancy_ids"] = record_pregnancy_ids data["record_unique_id"] = rch_rec.uid record = {'status_code': 200,'status_msg': "Success","family_details":data} else: record = {'status_code': 200,'status_msg': "No records found","data":[]} except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_edit_beneficiary_family.insert_one(log) return jsonify(record)
def all_time_vaccine_count(): try: args = request.json log = {} log['request'] = args vaccine_doses = session.query(VaccineDose).filter( VaccineDose.vaccine_id.in_(tuple(args['data']))).all() vaccine = {} for vd in vaccine_doses: v = vd.vaccine str_id = str(v.name) if str_id in vaccine: vaccine[str_id]['id'].append(vd.id) else: vaccine[str_id] = {} vaccine[str_id]['id'] = [vd.id] vaccine[str_id]['name'] = v.name vaccine[str_id]['count'] = 0 for vacc in vaccine.keys(): for v_id in vaccine[vacc]['id']: sub_select_query = "SELECT COUNT(*) FROM immunisation_log WHERE vaccine_dose_id=" + str( v_id) + " allow filtering;" sub_log = cassandra_client.session.execute(sub_select_query) vaccine[vacc][ 'count'] = vaccine[vacc]['count'] + sub_log[0].count list_data = list(vaccine.values()) if list_data: record = {'status_code': 200, 'data': list_data} else: record = { 'status_code': 404, "status_msg": "No data found.", 'data': list_data } except Exception as e: error_email.send_email({'error': str(e), 'url': request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_all_time_vaccine_count.insert_one(log) return jsonify(record)
def edit_service_provider(): try: args = request.json log = {} log['request'] = args preg_rec = session.query(PregnancyDetail).filter(PregnancyDetail.pregnancy_id == args["data"]["record_pregnancy_id"]).first() ser_rec = session.query(ServiceProvider).filter(ServiceProvider.pregnancy_detail_id == preg_rec.id).first() if ser_rec: data = {} data["icds"]= ser_rec.icds data["anganwadi_centre"]= ser_rec.anganwadi_centre data["anganwadi_worker"]= ser_rec.anganwadi_worker data["anganwadi_phone"]= ser_rec.anganwadi_phone data["health_centre"]= ser_rec.health_centre data["sub_centre"]= ser_rec.sub_centre data["asha"]= ser_rec.asha data["asha_phone"]= ser_rec.asha_phone data["jphn"]= ser_rec.jphn data["jphn_phone"]= ser_rec.jphn_phone data["hospital_for_delivery"]= ser_rec.hospital_for_delivery data["hospital_address"] = ser_rec.hospital_address data["birth_companion"]= ser_rec.birth_companion data["transportation_arrangement"]= ser_rec.transportation_arrangement data["registered_for_pmmvy"]= ser_rec.registered_for_pmmvy data["first_financial_aid"]= ser_rec.first_financial_aid data["second_financial_aid"]= ser_rec.second_financial_aid data["third_financial_aid"]= ser_rec.third_financial_aid data["anganwadi_registration_number"]= ser_rec.anganwadi_registration_number data["sub_centre_registration_number"]= ser_rec.sub_centre_registration_number data["date_of_first_registration"]= date_to_string(ser_rec.date_of_first_registration) data["record_service_id"] = ser_rec.id data["nearest_station"] = ser_rec.get_station_object() record = {'status_code': 200,'status_msg': "Success","service_provider_details":data} else: record = {'status_code': 200,'status_msg': "No records found","data":[]} except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_edit_service_provider.insert_one(log) return jsonify(record)
def detailed_immunization_register(): try: args = request.json log = {} log['request'] = args station_ids = args['station'] csv = args['csv'] == "y" from_str = custom_functions.obj_to_date( args['date_from']).split(" ")[0] to_str = custom_functions.obj_to_date(args['date_to'], extra_day=1).split(" ")[0] data = {} for station_id in station_ids: sub_select_query = "SELECT beneficiary_id,vaccine_details,beneficiary_details FROM kba.immunisation_log WHERE \ station_id='{}' AND current_date >= '{}' AND current_date <= '{}' allow filtering;" sub_logs = cassandra_client.session.execute( sub_select_query.format(station_id, from_str, to_str)) for sub_log in sub_logs: if sub_log.beneficiary_id in data: data[sub_log.beneficiary_id]['vaccines_given'].append( sub_log.vaccine_details['vaccine_dose_name']) else: if check_filter(args, sub_log): data[sub_log.beneficiary_id] = {} data[sub_log.beneficiary_id][ 'child_name'] = sub_log.beneficiary_details[ 'child_name'] data[sub_log.beneficiary_id][ 'father_name'] = sub_log.beneficiary_details[ 'father_name'] data[sub_log.beneficiary_id][ 'mother_name'] = sub_log.beneficiary_details[ 'mother_name'] data[sub_log.beneficiary_id][ 'address'] = sub_log.beneficiary_details['address'] data[sub_log.beneficiary_id][ 'sex'] = sub_log.beneficiary_details['sex'] if not csv: dat = custom_functions.date_to_string(sub_log.beneficiary_details['date_of_birth'],False) if 'date_of_birth' in sub_log.beneficiary_details else {} else: try: format = custom_functions.date_to_string( sub_log. beneficiary_details['date_of_birth'], False ) if 'date_of_birth' in sub_log.beneficiary_details else { 'dd': "0", 'mm': "0", 'yyyy': "0000" } dat = str(format['dd']) + "/" + str( format['mm']) + "/" + str(format['yyyy']) except: dat = "" data[sub_log.beneficiary_id]['date_of_birth'] = dat data[sub_log.beneficiary_id]['vaccines_given'] = [ sub_log.vaccine_details['vaccine_dose_name'] ] detailed_data = data.values() if csv: file_name = generate_csv(list(detailed_data)) record = { 'status_code': 200, 'status_msg': "Posted successfully", "file_name": file_name } else: list_data = list(detailed_data) if list_data: record = {'status_code': 200, 'data': list_data} else: record = { 'status_code': 404, "status_msg": "No data found.", 'data': list_data } except Exception as e: error_email.send_email({'error': str(e), 'url': request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_detailed_immunization_register.insert_one(log) return jsonify(record)
def station_vaccination_analytics(): args = request.json log = {} log['request'] = args csv = args['csv'] == "y" from_str = custom_functions.obj_to_date(args['date_from']).split(" ")[0] to_str = custom_functions.obj_to_date(args['date_to'], extra_day=1).split(" ")[0] station_ids = args['station'] vaccine_name = args['vaccine_name'] if 'vaccine_name' in args else None batch_id = args['batch_id'] if 'batch_id' in args else None return_obj = {} main_obj = [] csv_query = "AND name='{}' " if vaccine_name else "" csv_query = csv_query + ("AND package_id='{}' " if batch_id else "") sub_select_query = "SELECT package_id,name,date_rec,beneficiary_no,vaccine_no,station_other FROM kba.batch_immunisation_log WHERE \ station_id='{}' AND date_rec >= '{}' AND date_rec <= '{}' " + csv_query + "allow filtering;" try: for station in station_ids: if vaccine_name: sub_logs = cassandra_client.session.execute( sub_select_query.format(str(station), from_str, to_str, vaccine_name, batch_id)) else: sub_logs = cassandra_client.session.execute( sub_select_query.format(str(station), from_str, to_str, batch_id)) for sub_log in sub_logs: datestr = str(sub_log.date_rec) if sub_log.package_id in return_obj: if datestr in return_obj[sub_log.package_id]: obj = {} obj['batch_id'] = sub_log.package_id obj['vaccine_name'] = sub_log.name if csv: dat = custom_functions.date_to_string( datestr, False) else: try: format = custom_functions.date_to_string( datestr, False) dat = str(format['dd']) + "/" + str( format['mm']) + "/" + str(format['yyyy']) except: dat = "" obj['date_of_administration'] = dat obj['no_of_doses_administered'] = sub_log.vaccine_no obj['no_of_beneficiaries_administered'] = sub_log.beneficiary_no main_obj.append(obj) else: return_obj[sub_log.package_id][datestr] = [] obj = {} obj['batch_id'] = sub_log.package_id obj['vaccine_name'] = sub_log.name if csv: dat = custom_functions.date_to_string( datestr, False) else: try: format = custom_functions.date_to_string( datestr, False) dat = str(format['dd']) + "/" + str( format['mm']) + "/" + str(format['yyyy']) except: dat = "" obj['date_of_administration'] = dat obj['no_of_doses_administered'] = sub_log.vaccine_no obj['no_of_beneficiaries_administered'] = sub_log.beneficiary_no main_obj.append(obj) else: return_obj[sub_log.package_id] = {} return_obj[sub_log.package_id][datestr] = [] obj = {} obj['batch_id'] = sub_log.package_id obj['vaccine_name'] = sub_log.name if not csv: dat = custom_functions.date_to_string(datestr, False) else: try: format = custom_functions.date_to_string( datestr, False) dat = str(format['dd']) + "/" + str( format['mm']) + "/" + str(format['yyyy']) except: dat = "" obj['date_of_administration'] = dat obj['no_of_doses_administered'] = sub_log.vaccine_no obj['no_of_beneficiaries_administered'] = sub_log.beneficiary_no main_obj.append(obj) if main_obj: if csv: file_name = generate_csv(main_obj) record = { 'status_code': 200, 'status_msg': "Posted successfully", "file_name": file_name } else: record = { 'status_code': 200, 'status_msg': "Posted successfully", "data": main_obj } else: record = { 'status_code': 404, 'status_msg': "No records found", "data": [] } except Exception as e: error_email.send_email({'error': str(e), 'url': request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_station_vaccination_analytics.insert_one(log) return jsonify(record)
def show(): try: args = request.json log = {} log['request'] = args return_data = [] if False: ## TO DO LATER. from_obj = args['date'] from_time = custom_functions.obj_to_date(from_obj) args['date']['HH'] = 23 args['date']['MM'] = 59 to_obj = args['date'] to_time = custom_functions.obj_to_date(to_obj) sub_select_query = "SELECT id,name,dose_count,package_id,manufacturing_date,manufacturer_info,date_time FROM kba.vaccine_sub_log WHERE status='received' \ AND date_time >= '{}' AND date_time <= '{}' \ AND station_id={} allow filtering;" else: sub_select_query = "SELECT * FROM kba.vaccine_sub_log WHERE \ current_station_id={} allow filtering;" for station_id in args['station_id']: station_obj = {} station_obj["station_id"] = station_id station_obj["vaccines"] = {} sub_logs = cassandra_client.session.execute( sub_select_query.format(station_id)) for sub_log in sub_logs: vaccine_name = sub_log.name if vaccine_name in station_obj["vaccines"]: if sub_log.status == "send": station_obj["vaccines"][vaccine_name][ 'transit_count'] = station_obj["vaccines"][ vaccine_name][ 'transit_count'] + sub_log.dose_count else: station_obj["vaccines"][vaccine_name][ 'received_count'] = station_obj["vaccines"][ vaccine_name][ 'received_count'] + sub_log.dose_count count_obj = {} count_obj['count'] = sub_log.dose_count count_obj['vaccine_sub_id'] = str(sub_log.id) count_obj['package_id'] = sub_log.package_id count_obj['previous_station'] = dict( sub_log.previous_station) count_obj[ 'status'] = "In-Transit" if sub_log.status == "send" else "Received" count_obj[ 'date_checked_in'] = custom_functions.date_to_string( sub_log.date_time) count_obj[ 'manufacturing_date'] = custom_functions.date_to_string( sub_log.manufacturing_date) count_obj['expiry_date'] = custom_functions.date_to_string( sub_log.expiry_date) count_obj['manufacturer_info'] = sub_log.manufacturer_info station_obj["vaccines"][vaccine_name]['batches'].append( count_obj) else: station_obj["vaccines"][vaccine_name] = {} if sub_log.status == "send": station_obj["vaccines"][vaccine_name][ 'transit_count'] = sub_log.dose_count station_obj["vaccines"][vaccine_name][ 'received_count'] = 0 else: station_obj["vaccines"][vaccine_name][ 'transit_count'] = 0 station_obj["vaccines"][vaccine_name][ 'received_count'] = sub_log.dose_count station_obj["vaccines"][vaccine_name]['batches'] = [] count_obj = {} count_obj['count'] = sub_log.dose_count count_obj['vaccine_sub_id'] = str(sub_log.id) count_obj['package_id'] = sub_log.package_id count_obj[ 'status'] = "In-Transit" if sub_log.status == "send" else "Received" count_obj['previous_station'] = dict( sub_log.previous_station) count_obj[ 'date_checked_in'] = custom_functions.date_to_string( sub_log.date_time) count_obj[ 'manufacturing_date'] = custom_functions.date_to_string( sub_log.manufacturing_date) count_obj['expiry_date'] = custom_functions.date_to_string( sub_log.expiry_date) count_obj['manufacturer_info'] = sub_log.manufacturer_info if (station_obj["vaccines"][vaccine_name]['transit_count'] + station_obj["vaccines"][vaccine_name] ['received_count']) > 0: station_obj["vaccines"][vaccine_name][ 'batches'].append(count_obj) return_data.append(station_obj) if return_data: record = { 'status_code': 200, 'status_msg': "Posted successfully", "data": return_data } else: record = { 'status_code': 404, 'status_msg': "No records found", "data": [] } except Exception as e: error_email.send_email({'error': str(e), 'url': request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_station_vaccine_analytics.insert_one(log) return jsonify(record)
def post(self): """ Documentation Params: Specified below. Returns: JSON dict Sample Request: requests.post(url='http://192.168.1.22:5000/api/immunization', params={"beneficiary_id":"8992KOKOK","batch_id":"34232DDW","batch_type_id":"qqq","beneficiary_type_id":"898HBBJ","station_id":"werwer1113","medicine_id":"2","vile_image":"base encoded string"}) """ parser = reqparse.RequestParser() parser.add_argument('Age', type=dict, required=True, help="vaccination_dict") parser.add_argument('edited', type=dict, required=True, help="discarded_dict") parser.add_argument('BeneficiaryId', type=str, required=True, help="benefeciary id") parser.add_argument('nextDate', type=dict, required=True, help="next date") parser.add_argument('BeneficiaryIdType', type=str, required=True, help="beneficiary type not defined") parser.add_argument('station_other', type=dict, required=True) parser.add_argument('GeoLocation', type=dict,required=True, help="geo location not detailed") parser.add_argument('currentDate', type=dict) ''' parser.add_argument('comment', type=str,required=False) ''' args = parser.parse_args() fields = "(id,vaccine_id, vaccine_dose_id, current_date, next_date, beneficiary_id, beneficiary_details,vaccine_details,beneficiary_type, age, station_id, station_other, geo_location)" try: log = {} log['request'] = args age_object = {} age_vaccine_data = args["Age"] ages = age_vaccine_data.keys() child_rec = session.query(Child).filter(Child.rch_id == args["BeneficiaryId"]).first() rch_user = session.query(RCHUser).filter(RCHUser.id == child_rec.rch_user_id).first() if bool(args["currentDate"]): current_time = custom_functions.obj_to_date(args["currentDate"],False) else: current_time = datetime.now() if bool(args["nextDate"]): nd = custom_functions.obj_to_date(args["nextDate"]['date'],False) else: nd = None if not bool(args['station_other']): args['station_other'] = call_et() if args["edited"].keys(): self.discard_taken_vaccination(args["edited"],args['BeneficiaryId'],args["station_other"]) if child_rec: cassandra_client.set_table("immunisation_log",fields) for age in ages: age_object[age] = {} vaccines = age_vaccine_data[age] vaccines_keys = vaccines.keys() for vaccine_name in vaccines_keys: vaccine_object = vaccines[vaccine_name] if bool(vaccine_object): vaccine_id = vaccine_object["vaccine_package_id"] if "vaccine_package_id" in vaccine_object else None vd = session.query(VaccineDose).filter(VaccineDose.name == vaccine_name).first() vacc_exists = session.query(Vaccination) \ .filter(Vaccination.beneficiary_id==args["BeneficiaryId"]) \ .filter(Vaccination.vaccine_batch_id==vaccine_id)\ .filter(Vaccination.vaccine_dose_id==vd.id).first() if vacc_exists: continue if bool(args["currentDate"]) and not vaccine_id: vaccine_id = "ExternalPackageID" vaccine_current_date = str(current_time) vaccine_next_date = vaccine_object["next_date"] if "next_date" in vaccine_object else "" age_object[age][vaccine_name] ={} mv = session.query(MissedVaccination) \ .filter(MissedVaccination.beneficiary_id == args["BeneficiaryId"]) \ .filter(MissedVaccination.vaccine_dose_id == vd.id) \ .filter(MissedVaccination.age == age) if vaccine_id: beneficiary_details = {} beneficiary_details['child_name'] = child_rec.name beneficiary_details['mother_name'] = rch_user.name beneficiary_details['date_of_birth'] = child_rec.date_of_birth.strftime("%Y-%m-%d %H:%M:%S") beneficiary_details['father_name'] = rch_user.husband_name beneficiary_details['address'] = rch_user.address beneficiary_details['sex'] = child_rec.gender vaccine_details = {} vac = vd.vaccine vaccine_details['vaccine_id'] = str(vac.id) vaccine_details['vaccine_name'] = vac.name vaccine_details['vaccine_dose_id'] = str(vd.id) vaccine_details['vaccine_dose_name'] = vd.name age_object[age][vaccine_name]['vaccine_id'] = vac.id age_object[age][vaccine_name]['vaccine_name'] = vac.name age_object[age][vaccine_name]['vaccine_dose_id'] = vd.id age_object[age][vaccine_name]['vaccine_dose_name'] = vd.name age_object[age][vaccine_name]['package_id'] = vaccine_id age_object[age][vaccine_name]['vaccination_date'] = current_time.strftime("%Y-%m-%d") cassandra_client.insert_data(uuid.uuid4(), str(vaccine_id), vd.id, vaccine_current_date, \ vaccine_next_date, args["BeneficiaryId"],beneficiary_details,\ vaccine_details, args["BeneficiaryIdType"], age, str(args["station_other"]['station_id']), \ eval(json.dumps(args["station_other"])),args["GeoLocation"]) mvd = mv.filter(MissedVaccination.active == True).first() if mvd: mvd.active = False session.add(mvd) session.commit() v = Vaccination( beneficiary_id=args["BeneficiaryId"], beneficiary_id_type =args["BeneficiaryIdType"], age =age, vaccine_batch_id = vaccine_id, current_date=current_time, next_date= nd, station_id = int(args["station_other"]['station_id']), vaccine_dose_id = vd.id) session.add(v) session.commit() else: v = session.query(Vaccination) \ .filter(Vaccination.beneficiary_id==args["BeneficiaryId"]) \ .filter(Vaccination.age ==age) \ .filter(Vaccination.vaccine_dose_id == vd.id) if not v.first(): mv = MissedVaccination( beneficiary_id=args["BeneficiaryId"], beneficiary_id_type =args["BeneficiaryIdType"], age=age, reason = vaccine_object["reason"] if "reason" in vaccine_object and vaccine_object['reason'] else "Automated Reason", current_date=current_time, next_date= nd, station_id = int(args["station_other"]['station_id']), vaccine_dose_id = vd.id) nxt = custom_functions.obj_to_date(vaccine_object["next_vaccine_date"],False) age_object[age][vaccine_name]['expected_date'] = nxt.strftime("%Y-%m-%d") session.add(mv) session.commit() if "vaccine_batch_id" in vaccine_object and vaccine_object['vaccine_batch_id']:#.replace('{"','{').replace(', "',',').replace('":',':') beneficiary_dict = {"beneficiary_id":args["BeneficiaryId"],"vaccine_dose_id":vd.id,"age":age,"time_rec":current_time.strftime("%H:%M:%S")} vaccine_dict = {"vaccine_id":str(vaccine_object["vaccine_batch_id"]),"time_rec":current_time.strftime("%H:%M:%S")} batch_imm_log = "UPDATE kba.batch_immunisation_log SET name='{}', \ beneficiary_no={}, vaccine_no={}, station_other={}, \ beneficiary_list=beneficiary_list+[{}], vaccine_list=vaccine_list+[{}] \ WHERE package_id='{}' AND date_rec='{}' AND station_id='{}';" vaccine_sub_log_rec = cassandra_client.session.execute("SELECT beneficiary_no,vaccine_no FROM kba.batch_immunisation_log WHERE package_id='{}' AND date_rec='{}' AND station_id='{}';"\ .format(vaccine_id, current_time.strftime("%Y-%m-%d"), args["station_other"]['station_id'])) if vaccine_sub_log_rec: beneficiary_no = vaccine_sub_log_rec[0].beneficiary_no + 1 vaccine_no = vaccine_sub_log_rec[0].vaccine_no + 1 else: beneficiary_no = 1 vaccine_no = 1 beneficiary_obj_replica = json.dumps(beneficiary_dict).replace('{"','{').replace(', "',',').replace('":',':').replace('"',"'") vaccine_obj_replica = json.dumps(vaccine_dict).replace('{"','{').replace(', "',',').replace('":',':').replace('"',"'") vaccine_sub_log_rec = cassandra_client.session.execute('SELECT * FROM kba.vaccine_sub_log WHERE id='+str(vaccine_object["vaccine_batch_id"])+';') new_count = vaccine_sub_log_rec[0].dose_count - 1 cassandra_client.session.execute('UPDATE kba.vaccine_sub_log SET dose_count ='+str(new_count)+' WHERE id='+str(vaccine_object["vaccine_batch_id"])+';') cassandra_client.session.execute(batch_imm_log.format(vd.vaccine.name,str(beneficiary_no),str(vaccine_no),\ eval(json.dumps(args["station_other"])), beneficiary_obj_replica, vaccine_obj_replica\ ,vaccine_id, current_time.strftime("%Y-%m-%d"), args["station_other"]['station_id'])) self.update_beneficiary_immunisation_tracking(child_rec.rch_id, age_object,args["nextDate"]) record = {'status_code': 200,'status_msg': "API is successfully posted."} else: record = {'status_code': 404,'status_msg': "Child Record Not found."} except Exception as e: error_email.send_email({'error':str(e),'url':'/immunization/post'}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_immunisation_post.insert_one(log) return record
def pregnancy_children_data(): args = request.args log = {'request':args} try: pregnancy_id = args['record_pregnancy_id'] preg_rec = session.query(PregnancyDetail).filter(PregnancyDetail.pregnancy_id == pregnancy_id).first() if preg_rec: rch_rec = session.query(RCHUser).filter(RCHUser.id == preg_rec.rch_user_id).first() child_recs = session.query(Child).filter(Child.pregnancy_detail_id == preg_rec.id,Child.deleted==False).all() response_data = [] for child_rec in child_recs: rec = {} record = cassandra_client.session.execute("SELECT JSON * FROM kba.beneficiary_immunisation_tracking WHERE beneficiary_id='"+child_rec.rch_id+"';")[0] vaccination_object = json.loads(record.json)['vaccination_object'] ages = session.execute("SELECT * FROM ages ORDER BY weeks;") ages_obj = [] for age in ages: o = {} o['name'] = age.code ages_obj.append(o) ages_obj.reverse() main_vaccined = False vaccines = [] for _age in ages_obj: vaccine_obj = {} vaccined =False vaccine_obj['age'] = _age['name'] vaccine_obj['missed'] = [] vaccine_obj['vaccines'] = [] current_age_v_objects = vaccination_object[_age['name']] if main_vaccined: for current_age_v_objects_key in current_age_v_objects.keys(): current_age_v_object = current_age_v_objects[current_age_v_objects_key] if not current_age_v_object['vaccine_id']: vaccine_obj['missed'].append({ 'age':_age['name'], 'vaccine':current_age_v_objects_key, 'eligible_date': date_to_string(current_age_v_object['expected_date'],False) }) else: for current_age_v_objects_key in current_age_v_objects.keys(): current_age_v_object = current_age_v_objects[current_age_v_objects_key] if current_age_v_object['vaccine_id']: main_vaccined = True vaccined = True for current_age_v_objects_key in current_age_v_objects.keys(): current_age_v_object = current_age_v_objects[current_age_v_objects_key] if vaccined: if not current_age_v_object['vaccine_id']: vaccine_obj['missed'].append({ 'age':_age['name'], 'vaccine': current_age_v_objects_key, 'eligible_date': date_to_string(current_age_v_object['expected_date'],False) }) else: vaccine_obj['vaccines'].append({ 'age':_age['name'], 'vaccine': current_age_v_objects_key, 'eligible_date': date_to_string(current_age_v_object['expected_date'],False) }) vaccines.append(vaccine_obj) vaccines.reverse() rec['dob'] = date_to_string(child_rec.date_of_birth) rec['rch_id'] = child_rec.rch_id rec['child_name'] = child_rec.name rec['deleted'] = child_rec.deleted rec['gender'] = child_rec.gender rec['child_age'] = '1' rec['woman_name'] = rch_rec.name rec['husband_name'] = rch_rec.husband_name rec['phone_no'] = rch_rec.phone_no_1 rec['address'] = rch_rec.address rec['husband_name'] = rch_rec.husband_name rec['vaccines'] = vaccines response_data.append(rec) record = {'status_code': 200, "status_msg": "Success","data":response_data} else: record = {'status_code': 404, "status_msg": "Mother record not found."} except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_pregnancy_children_data.insert_one(log) return jsonify(record)
def get_wb_content(bs, userid, type): global ERROR_INFO get_user_info(bs, userid, type) wb_num = db.query( "select weibo_num from users where user_id={};".format(userid))[0][0] if wb_num == 0: print("weibo_num: 0.") elif wb_num < 11: bs.get('https://weibo.cn/' + userid) time.sleep(2) pagesource = bs.page_source.encode('utf-8').decode('utf-8') if '还没发过微博.' in pagesource: ERROR_INFO += '{} 首页显示未发过微博,需要核实\n'.format(userid) error_email.send_email('{} 首页显示未发过微博,需要核实\n'.format(userid)) return else: soup = BeautifulSoup(pagesource, 'html.parser') class_c = soup.select(".c") get_weibo_info(bs, class_c, userid) else: flag = 3 # 防止页面打开失败,并限制重试次数 while flag > 0: bs.get('https://weibo.cn/' + userid) time.sleep(2) pagesource = bs.page_source.encode('utf-8').decode('utf-8') if '她还没发过微博.' in pagesource: flag -= 1 continue elif '如果没有自动跳转,请' in pagesource: flag -= 1 continue elif not re.search(r'1/\d+页</div>', pagesource): # 防止首页没有页码数 ERROR_INFO += '{}首页无法显示用户页码\n'.format(userid) flag -= 1 print(ERROR_INFO) continue elif '<title>我的首页</title>' in pagesource: flag -= 1 continue else: soup = BeautifulSoup(pagesource, 'html.parser') class_c = soup.select('.c') if len(class_c) == 3: flag -= 1 continue else: flag = -1 with open('test.txt', 'w', encoding='utf-8') as file: file.write(pagesource) if flag == 0: ERROR_INFO += '{}首页重试次数超限\n'.format(userid) error_email.send_email('{}首页重试次数超限\n'.format(userid)) else: soup = BeautifulSoup(pagesource, 'html.parser') page_num = int( re.findall(r'1/(\d+)页', soup.select(".pa")[0].text)[0]) page_num = page_num if page_num < 8 else 8 class_c = soup.select(".c") get_weibo_info(bs, class_c, userid) # 获取第一页微博内容 for num in range(2, page_num + 1): flag = 3 # 防止页面打开失败 while flag > 0: bs.get('https://weibo.cn/' + userid + '?page=' + str(num)) time.sleep(2) pagesource = bs.page_source.encode('utf-8').decode('utf-8') if '还没发过微博.' in pagesource: flag -= 1 continue elif '如果没有自动跳转,请' in pagesource: flag -= 1 continue elif '<title>我的首页</title>' in pagesource: flag -= 1 continue else: soup = BeautifulSoup(pagesource, 'html.parser') class_c = soup.select('.c') if len(class_c) == 3: flag -= 1 continue else: flag = -1 print('current page: {}/{}'.format(num, page_num)) # 测试代码 with open('test.txt', 'w', encoding='utf-8') as file: file.write(pagesource) if flag == 0: ERROR_INFO += '{}用户重试次数超限,当前错误页面{}/{}\n'.format( userid, num, page_num) error_email.send_email('{}用户重试次数超限,当前错误页面{}/{}\n'.format( userid, num, page_num)) else: get_weibo_info(bs, class_c, userid)
def lookup_data(): try: log = {} languages = session.query(Language).all() lang_obj = [] for language in languages: obj = {} obj['name'] = language.name obj['id'] = language.code lang_obj.append(obj) ages = session.query(Age).all() vac_obj = {} vac_obj['vaccine'] = [] vaccine_names_id = {} vaccine_names = {} for age in ages: age_vaccines = session.query(AgeVaccine).filter(AgeVaccine.age_id == age.id).all() obj = {} obj['age'] = age.code obj['vaccines'] = [] for age_vaccine in age_vaccines: vaccine_dose = session.query(VaccineDose).filter(VaccineDose.id == age_vaccine.vaccine_dose_id).first() vaccine = vaccine_dose.vaccine if vaccine.name in vaccine_names: vaccine_names[vaccine.name].append(vaccine_dose.name) vaccine_names_id[vaccine.name] = vaccine.id else: vaccine_names[vaccine.name] = [] vaccine_names_id[vaccine.name] = vaccine.id vaccine_names[vaccine.name].append(vaccine_dose.name) obj['vaccines'].append(vaccine_dose.name)#{"name":vaccine_dose.name,"parent_name":vaccine.name}) vac_obj['vaccine'].append(obj) stations_obj = {} stations_obj['stations_list'] = [] stations = session.query(Station).all() for station in stations: if station.code != "ET1": obj = {} obj['station_name'] = station.name obj['station_code'] = station.code obj['station_id'] = str(station.id) location = session.query(Location).filter(Location.id == station.location_id).first() obj['station_address'] = location.name stations_obj['stations_list'].append(obj) roles = session.query(Role).all() roles_obj = [] for role in roles: if not role.role_name in ['admin','rch_user']: roles_obj.append({'id':role.id,'name':role.role_name}) record = { 'status_code': 200, 'status_msg': "Success", "languages":lang_obj, 'vaccines':vac_obj, 'vaccine_names':vaccine_names, 'vaccine_names_id':vaccine_names_id, 'stations':stations_obj, 'roles':roles_obj } except Exception as e: error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_lookup_data.insert_one(log) return jsonify(record)
def login(username, psw): try: rec = session.query(User).filter(User.username == username).first() if rec: check = check_password(psw, rec.password) if check: id = rec.id user_roles = session.query(UserRole).filter( UserRole.user_id == id).all() station_users = session.query(StationUser).filter( StationUser.user_id == id).all() ur = [] for user_r in user_roles: role_rec = session.query(Role).filter( Role.id == user_r.role_id).first() ur.append(role_rec.role_name) st = [] for station_user in station_users: station_rec = session.query(Station).filter( Station.id == station_user.station_id).first() location = session.query(Location).filter( Location.id == station_rec.location_id).first() st.append({ 'station_id': station_rec.id, 'station_name': station_rec.name, 'station_code': station_rec.code, 'station_address': location.name }) access_token = create_access_token( identity=id, expires_delta=timedelta( seconds=server_config. Config["ACCESS_TOKEN_EXPIRY_TIME"])) refresh_token = create_refresh_token( identity=id, expires_delta=timedelta( seconds=server_config. Config["REFRESH_TOKEN_EXPIRY_TIME"])) rec.refresh_token = refresh_token session.commit() response = { 'code': 200, 'result': True, 'username': rec.name, 'message': "User logged in.", "roles": ur, "stations": st, 'access_token': access_token, 'refresh_token': refresh_token } else: id = None response = { 'code': 404, 'result': False, 'message': "Username or Password is Wrong." } else: id = None response = { 'code': 404, 'result': False, 'message': "Username not found." } except Exception as e: session.rollback() id = None error_email.send_email({'error': str(e), 'url': '/login'}) response = {'code': 500, 'result': False, "message": str(e)} return response, id
'2635172317', '5607072131' ] u2 = [ '5224178651', '5292093513', '5543871990', '3514150117', '5573225406', '2122149263', '5608624080', '1973593033', '2978842514' ] pool = Pool(2) arr = [u1, u2] sep_time = 0 # 设置登录间隔,防止登录卡死 res = list() for item in arr: res.append(pool.apply_async(func, args=(item, sep_time, 'normal'))) sep_time = 4 pool.close() pool.join() for item in res: item.get(11) print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))) # 保存错误日志 with open('error.log', 'w+', encoding='utf-8') as f: f.writelines(ERROR_INFO) print(ERROR_INFO) error_email.send_email('本次任务完成。\n' + ERROR_INFO) except Exception as e: error_email.send_email(traceback.format_exc() + '\n' + '本次任务信息:\n' + ERROR_INFO) print(ERROR_INFO) with open('error.log', 'w+', encoding='utf-8') as f: f.writelines(ERROR_INFO)
def get_weibo_info(bs, source, userid): global ERROR_INFO for i in range(1, len(source) - 2): # bug检测 if len(source[i].select(".ct")) < 1: ERROR_INFO += source[i].text break posttime = source[i].select(".ct")[0].text text = source[i].text like, repost, comment = re.findall( r'赞\[(\d+)\]\s转发\[(\d+)\]\s评论\[(\d+)\]', text)[0] wb_content = source[i].select('div')[0].text if '转发了' in wb_content and len(source[i].select('div')) > 1: wb_content += source[i].select('div')[-1].text if '...全文' in wb_content: fulltext_link = source[i].select('div')[0].select('a') for item in fulltext_link: if '全文' in item.text: new_url = base_url + item['href'] flag = 3 # 防止页面打开失败, 并设置重试次数 while flag > 0: bs.get(new_url) time.sleep(2) tmp_pagesource = bs.page_source.encode('utf-8').decode( 'utf-8') if '她还没发过微博.' in tmp_pagesource: flag -= 1 continue elif '如果没有自动跳转,请' in tmp_pagesource: flag -= 1 continue elif '<title>我的首页</title>' in tmp_pagesource: flag -= 1 continue else: soup = BeautifulSoup(tmp_pagesource, 'html.parser') tmp_select = soup.select('.c') if len(tmp_select) == 3: flag -= 1 continue else: flag = -1 with open('test.txt', 'w', encoding='utf-8') as file: file.write(tmp_pagesource) if flag == 0: error_email.send_email( '{}用户全文显示时出现异常,{} Source code:{}\n'.format( userid, new_url, tmp_pagesource)) ERROR_INFO += '{}用户全文显示时出现异常, Source code:{}\n'.format( userid, tmp_pagesource) else: # 检查是否数组越界 if len(tmp_select) < 2: ERROR_INFO += tmp_pagesource + '\n' error_email.send_email(userid + '数组越界: ' + tmp_pagesource) else: wb_content = tmp_select[1].select('div')[0].text if len(tmp_select[1].select('div')) > 0 else \ tmp_select[2].select('div')[0].text lt = [ userid, wb_content, posttime, repost, comment, like ] lt = [mysql.pymysql.escape_string(i) for i in lt] # 转义特殊sql字符 sql = "insert into wb(user_id, content, post_time, repost_num, comment_num, like_num) " \ "values('{}','{}','{}',{},{},{});".format(*lt) db.insert(sql) # wb_content = soup.select('.c')[1].select('div')[0].text else: lt = [userid, wb_content, posttime, repost, comment, like] lt = [mysql.pymysql.escape_string(i) for i in lt] # 转义特殊sql字符 sql = "insert into wb(user_id, content, post_time, repost_num, comment_num, like_num) values('{}','{}'," \ "'{}',{},{},{});".format(*lt) db.insert(sql)
def get(self): """ Documentation Params: var1: required var2: required Returns: JSON dict """ parser = reqparse.RequestParser() parser.add_argument('station_id', type=int, required=True, location='args', help="Station ID is required.") parser.add_argument('request_type', type=str, required=True, location='args', help="Send whether it is sent or confirmed data") args = parser.parse_args() try: data = [] log = {} log['request'] = args sub_select_query = "SELECT * FROM kba.vaccine_sub_log WHERE status='{}' AND current_station_id={} AND dose_count > 0 allow filtering;" if args['request_type'] == 'send': #STOCK OUT sub_logs = cassandra_client.session.execute( sub_select_query.format('received', str(args['station_id']))) elif args[ 'request_type'] == 'confirm': #STOCK IN : When registered the first status is this. sub_logs = cassandra_client.session.execute( sub_select_query.format('send', str(args['station_id']))) for sub_log in sub_logs: obj = {} obj['status'] = sub_log.status obj['datetime'] = custom_functions.date_to_string( sub_log.date_time) obj['uuid'] = str(sub_log.id) obj['previous_uuid'] = str( sub_log.previous_uuid) if sub_log.previous_uuid else None obj['dose_count'] = sub_log.dose_count obj['package_id'] = sub_log.package_id obj['comments'] = sub_log.comments obj['adjustments'] = { 'doses': sub_log.transit_loss, 'remarks': sub_log.transit_remark } obj['from_station'] = dict(sub_log.previous_station) obj['to_station'] = dict(sub_log.current_station) vaccine_select_query = "SELECT package_type_id,name,manufacturing_date,expiry_date,manufacturer_info FROM vaccine_log WHERE package_id='{}' LIMIT 1;" vaccine_log = cassandra_client.session.execute( vaccine_select_query.format(str(sub_log.package_id)))[0] obj['package_type_id'] = vaccine_log.package_type_id obj['name'] = vaccine_log.name obj['manufacturing_date'] = custom_functions.date_to_string( vaccine_log.manufacturing_date) obj['expiry_date'] = custom_functions.date_to_string( vaccine_log.expiry_date) obj['manufacturer_info'] = vaccine_log.manufacturer_info data.append(obj) record = { 'status_code': 200, 'status_message': 'Success', 'station_vaccine': data } except Exception as e: error_email.send_email({'error': str(e), 'url': '/vaccine/get'}) record = { 'status_code': 500, 'status_message': 'API failed: Internal Server Error', 'msg': str(e) } log['response'] = record ml_vaccine_get.insert_one(log) return record
def creation(): args = request.json log = {} log['request'] = args if not "phone_no" in args: log['response'] = {"status_code":400, "status_msg": "Bad Request. Phone Number not found."} ml_register_rch_user.insert_one(log) return jsonify({"status_code":400, "status_msg": "Bad Request. Phone Number not found."}) if args["phone_no"] == "": log['response'] = {"status_code": 400, "status_msg": "Bad Request. Phone Number not valid."} ml_register_rch_user.insert_one(log) return jsonify({"status_code":400, "status_msg": "Bad Request. Phone Number not valid."}) try: if "record_unique_id" in args: r = session.query(RCHUser).filter(RCHUser.phone_no_1 == args["phone_no"]) rch_rec_phone = r.count() rch_rec =r.first() if rch_rec_phone > 0 and args['record_unique_id'] != rch_rec.uid: log['response'] ={"status_code":400, "record_unique_id":rch_rec.uid, "status_msg": "Phone number is already taken for another user."} ml_register_rch_user.insert_one(log) return jsonify(log['response']) rch_rec = session.query(RCHUser).filter(RCHUser.uid == args["record_unique_id"]).first() woman_dob = obj_to_date(args["woman_dob"],False) husband_dob = obj_to_date(args["husband_dob"],False) preg_rec = session.query(PregnancyDetail).filter(PregnancyDetail.rch_user_id == rch_rec.id).all() record_pregnancy_ids = [] for p in preg_rec: record_pregnancy_ids.append(p.pregnancy_id) rch_rec.name = args["woman_name"] rch_rec.dob = woman_dob, rch_rec.address = args["address"] rch_rec.phone_no_1 = str(args["phone_no"]) rch_rec.phone_no_2 = args["phone_no_1"] rch_rec.age = args["woman_age"] rch_rec.husband_name = args["husband_name"] rch_rec.husband_dob = husband_dob, rch_rec.husband_age = args["husband_age"] rch_rec.family_reg_no = args["family_registration_number"] rch_rec.mother_education = args["mother_education"] rch_rec.unique_id = args["unique_id"] rch_rec.aadhar_id = args["aadhar_id"] rch_rec.income = args["income"] rch_rec.caste = args["caste"] rch_rec.ec_no = args["ec_no"] rch_rec.apl_bpl = args["apl_bpl"] rch_rec.bank_account_number = args["bank_account_number"] rch_rec.ifsc_code = args["ifsc_code"] rch_rec.category = args["category"] session.commit() record = {'status_code': 200, "woman_name":rch_rec.name,"record_unique_id":rch_rec.uid ,"record_pregnancy_ids":record_pregnancy_ids,"status_msg": "Details have been successfully edited."} else: rec = session.query(User).filter(User.username == str(args["phone_no"])).first() role = session.query(Role).filter(Role.role_name == "rch_user").first() uid = get_random_id() if rec: user = rec else: passwd = create_hash(args["unique_id"]) user=User( username=str(args["phone_no"]), password=passwd, unique_id=uid ) session.add(user) session.commit() user_role = UserRole(role_id=role.id,user_id=user.id) session.add(user_role) session.commit() rch_rec = session.query(RCHUser).filter(RCHUser.user_id == user.id).first() if rch_rec: preg_recs = session.query(PregnancyDetail).filter(PregnancyDetail.rch_user_id == rch_rec.id).all() preg_dates = {} for preg_rec in preg_recs: children = session.query(Child).filter(Child.pregnancy_detail_id == preg_rec.id).all() child_arr = [] for child in children: child_arr.append(child.date_of_birth) child_arr.sort() preg_dates[preg_rec.pregnancy_id] = date_to_string(child_arr[-1]) return jsonify({"status_code":401,"record_unique_id":rch_rec.uid, "pregnancy_dates":preg_dates, "status_msg": "RCH User already exists"}) else: woman_dob = obj_to_date(args["woman_dob"], False) husband_dob = obj_to_date(args["husband_dob"], False) rch_user=RCHUser( user_id = user.id, name = args["woman_name"], dob = woman_dob, address = args["address"], phone_no_1 = str(args["phone_no"]), phone_no_2 = args["phone_no_1"], age = args["woman_age"], husband_name = args["husband_name"], husband_dob = husband_dob, husband_age = args["husband_age"], family_reg_no = args["family_registration_number"], mother_education = args["mother_education"], unique_id = args["unique_id"], aadhar_id = args["aadhar_id"], income = args["income"], uid= uid, caste = args["caste"], ec_no = args["ec_no"], apl_bpl = args["apl_bpl"], bank_account_number = args["bank_account_number"], ifsc_code = args["ifsc_code"], category = args["category"] ) session.add(rch_user) session.commit() record = {'status_code': 200, "woman_name":rch_user.name, "record_unique_id":rch_user.uid ,"status_msg": "Details have been successfully created."} except Exception as e: session.rollback() error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_register_rch_user.insert_one(log) return jsonify(record)
def create_service_provider(): args = request.json log = {} log['request'] = args if not "record_pregnancy_id" in args: log['response'] = {"status_code":400, "status_msg": "Bad Request. RCH ID not found."} ml_register_service_provider.insert_one(log) return jsonify({"status_code":400, "status_msg": "Bad Request. RCH ID not found."}) if args["record_pregnancy_id"] == "": log['response'] = {"status_code": 400, "status_msg": "Bad Request. RCH ID not valid."} ml_register_service_provider.insert_one(log) return jsonify({"status_code":400, "status_msg": "Bad Request. RCH ID not valid."}) try: if ("record_pregnancy_id" in args) and ("record_service_id" in args): date_of_first_registration =obj_to_date(args["date_of_first_registration"], False) serv_rec = session.query(ServiceProvider).filter(ServiceProvider.id == args["record_service_id"]).first() if serv_rec: serv_rec.health_centre = args["health_centre"] serv_rec.sub_centre = args["sub_centre"] serv_rec.asha = args["asha"] serv_rec.asha_phone = args["asha_phone"] serv_rec.jphn = args["jphn"] serv_rec.jphn_phone = args["jphn_phone"] serv_rec.hospital_for_delivery = args["hospital_for_delivery"] serv_rec.hospital_address = args["hospital_address"] serv_rec.birth_companion = args["birth_companion"] serv_rec.transportation_arrangement = args["transportation_arrangement"] serv_rec.registered_for_pmmvy = False#args["registered_for_pmmvy"] serv_rec.first_financial_aid = False#args["first_financial_aid"] serv_rec.second_financial_aid = False#args["second_financial_aid"] serv_rec.third_financial_aid = False#args["third_financial_aid"] serv_rec.anganwadi_worker = args["anganwadi_worker"] serv_rec.anganwadi_registration_number = args["anganwadi_registration_number"] serv_rec.anganwadi_centre = args["anganwadi_centre"] serv_rec.anganwadi_phone = args["anganwadi_phone"] serv_rec.icds = args["icds"] serv_rec.sub_centre_registration_number = args["sub_centre_registration_number"] serv_rec.date_of_first_registration = date_of_first_registration serv_rec.nearest_station_id = int(args["nearest_station"]["station_id"] if "station_id" in args["nearest_station"] else 0) session.commit() record = {'status_code': 200, "record_service_id":serv_rec.id ,"status_msg": "Successfully updated."} else: jsonify({"status_code":404, "status_msg": "Record Service Provider Not Found."}) else: preg_detail = session.query(PregnancyDetail).filter(PregnancyDetail.pregnancy_id == args["record_pregnancy_id"]).first() if preg_detail: date_of_first_registration =obj_to_date(args["date_of_first_registration"], False) serv_rec = ServiceProvider( pregnancy_detail_id = preg_detail.id, health_centre = args["health_centre"], sub_centre = args["sub_centre"], asha = args["asha"], asha_phone = args["asha_phone"], jphn = args["jphn"], jphn_phone = args["jphn_phone"], hospital_for_delivery = args["hospital_for_delivery"], hospital_address = args["hospital_address"], birth_companion = args["birth_companion"], transportation_arrangement = args["transportation_arrangement"], registered_for_pmmvy = False,#args["registered_for_pmmvy"], first_financial_aid = False,#args["first_financial_aid"], second_financial_aid = False,#args["second_financial_aid"], third_financial_aid = False,#args["third_financial_aid"], anganwadi_worker = args["anganwadi_worker"], anganwadi_registration_number = args["anganwadi_registration_number"], anganwadi_centre = args["anganwadi_centre"], anganwadi_phone = args["anganwadi_phone"], icds = args["icds"], sub_centre_registration_number = args["sub_centre_registration_number"], date_of_first_registration = date_of_first_registration, nearest_station_id = int(args["nearest_station"]["station_id"] if "station_id" in args["nearest_station"] else 0) ) session.add(serv_rec) session.commit() record = {'status_code': 200, "record_service_id":serv_rec.id ,"status_msg": "Successfully created."} except Exception as e: session.rollback() error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_register_service_provider.insert_one(log) return jsonify(record)
def create_pregnancy(): args = request.json log = {} log['request'] = args if not "record_unique_id" in args: log['response'] = {"status_code":400, "status_msg": "Bad Request. Unique ID not found."} ml_register_pregnancy.insert_one(log) return jsonify({"status_code":400, "status_msg": "Bad Request. Unique ID not found."}) if args["record_unique_id"] == "": log['response'] = {"status_code": 400, "status_msg": "Bad Request. Unique ID not valid."} ml_register_pregnancy.insert_one(log) return jsonify({"status_code":400, "status_msg": "Bad Request. Unique ID is not valid."}) try: if "record_pregnancy_id" in args: preg_rec = session.query(PregnancyDetail).filter(PregnancyDetail.pregnancy_id == args["record_pregnancy_id"]).first() rec = session.query(RCHUser).filter(RCHUser.uid == args["record_unique_id"]).first() menstruation_date = obj_to_date(args["menstruation_date"], False) expected_delivery_date = obj_to_date(args["expected_delivery_date"], False) last_delivery_date = obj_to_date(args["last_delivery_date"], False) serv_rec = session.query(ServiceProvider).filter(ServiceProvider.pregnancy_detail_id == preg_rec.id).first() tt1_date = obj_to_date(args["tt1_date"], False) tt2_date = obj_to_date(args["tt2_date"], False) usg1_date = obj_to_date(args["usg1_date"], False) usg2_date = obj_to_date(args["usg2_date"], False) usg3_date = obj_to_date(args["usg3_date"], False) preg_rec.rch_user_id = rec.id, preg_rec.phone_no=args["phone_no"] preg_rec.drivers_number=args["drivers_number"] preg_rec.menstruation_date=menstruation_date, preg_rec.expected_delivery_date=expected_delivery_date, preg_rec.blood_group=args["blood_group"] preg_rec.last_delivery_date=last_delivery_date, preg_rec.rsby_reg_number=args["rsby_reg_number"] preg_rec.jsy_reg_number=args["jsy_reg_number"] preg_rec.gravida=int(args["gravida"]), preg_rec.para=int(args["para"]), preg_rec.no_of_live_children=int(args["no_of_live_children"]), preg_rec.no_of_abortions=int(args["no_of_abortions"]), preg_rec.tt1_date=tt1_date, preg_rec.tt2_date=tt2_date, preg_rec.usg1_date=usg1_date, preg_rec.usg2_date=usg2_date, preg_rec.usg3_date=usg3_date, preg_rec.important_findings=args["important_findings"] preg_rec.complication_details=args["complication_details"] preg_rec.heart_complications=args["heart_complications"] preg_rec.advice=args["advice"] preg_rec.referrals=args["referrals"] preg_rec.contraceptive_methods_used=args["contraceptive_methods_used"] preg_rec.rh_category=args["rh_category"] preg_rec.previous_delivery=args["previous_delivery"] child_rch_data = [] for child_record in args["child_data"]: if child_record['rch_id']: child_rec = session.query(Child).filter(Child.rch_id == child_record['rch_id'],Child.deleted==False).first() dob = obj_to_date(child_record['dob'], False) child_rec.name = child_record['name'] child_rec.gender = child_record['gender'] child_rec.deleted = True if child_record['deleted'] == "true" else False child_rec.date_of_birth = dob update_beneficiary_immunisation_tracking(child_rec.rch_id,dob) child_rch_data.append(child_rec.rch_id) session.commit() else: dob = obj_to_date(child_record['dob'], False) if child_record['dob'] else datetime.now() child_rec = Child( name=child_record['name'] if child_record['name'] else "Baby" + rec.name, gender=child_record['gender'], pregnancy_detail_id=preg_rec.id, rch_user_id=rec.id, date_of_birth=dob , rch_id = child_record['dup_rch_id'] if 'dup_rch_id' in child_record else "", deleted = True if child_record['deleted'] == "true" else False ) session.add(child_rec) session.commit() create_beneficiary_immunisation_tracking(child_rec.rch_id,dob) child_rch_data.append(child_rec.rch_id) add_to_cassandra(child_rec.rch_id, '3') producer.ProduceBeneficiaryData('Add_Beneficiary', '3', child_rec.rch_id) record = {'status_code': 200, 'woman_name':rec.name , "record_pregnancy_id": preg_rec.pregnancy_id, "record_service_id":serv_rec.id if serv_rec else None , "record_rch_ids": child_rch_data, "status_msg": "Pregnancy edited successfully."} else: rec = session.query(RCHUser).filter(RCHUser.uid == args["record_unique_id"]).first() if rec: menstruation_date = obj_to_date(args["menstruation_date"], False) expected_delivery_date = obj_to_date(args["expected_delivery_date"], False) last_delivery_date = obj_to_date(args["last_delivery_date"], False) tt1_date = obj_to_date(args["tt1_date"], False) tt2_date = obj_to_date(args["tt2_date"], False) usg1_date = obj_to_date(args["usg1_date"], False) usg2_date = obj_to_date(args["usg2_date"], False) usg3_date = obj_to_date(args["usg3_date"], False) preg_rec=PregnancyDetail( rch_user_id = rec.id, phone_no=args["phone_no"], drivers_number=args["drivers_number"], menstruation_date=menstruation_date, expected_delivery_date=expected_delivery_date, blood_group=args["blood_group"], last_delivery_date=last_delivery_date, rsby_reg_number=args["rsby_reg_number"], jsy_reg_number=args["jsy_reg_number"], gravida=int(args["gravida"]), para=int(args["para"]), no_of_live_children=int(args["no_of_live_children"]), no_of_abortions=int(args["no_of_abortions"]), tt1_date=tt1_date, tt2_date=tt2_date, usg1_date=usg1_date, usg2_date=usg2_date, usg3_date=usg3_date, important_findings=args["important_findings"], complication_details=args["complication_details"], heart_complications=args["heart_complications"], advice=args["advice"], referrals=args["referrals"], contraceptive_methods_used=args["contraceptive_methods_used"], rh_category=args["rh_category"], previous_delivery=args["previous_delivery"], pregnancy_id=args["pregnancy_id"] if "pregnancy_id" in args else "" ) session.add(preg_rec) session.commit() child_rch_data = [] if args["child_data"]: for child_record in args["child_data"]: dob = obj_to_date(child_record['dob'], False) if child_record['dob'] else datetime.now() child_rec = Child( name=child_record['name'] if child_record['name'] else "Baby" + rec.name, gender=child_record['gender'], pregnancy_detail_id=preg_rec.id, rch_user_id=rec.id, deleted = True if child_record['deleted'] == "true" else False, rch_id = child_record['dup_rch_id'] if 'dup_rch_id' in child_record else "", date_of_birth=dob ) session.add(child_rec) session.commit() create_beneficiary_immunisation_tracking(child_rec.rch_id,dob) child_rch_data.append(child_rec.rch_id) add_to_cassandra(child_rec.rch_id, '3'); producer.ProduceBeneficiaryData('Add_Beneficiary', '3', child_rec.rch_id) else: child_rec = Child( name= "Baby" + rec.name, gender= "m", pregnancy_detail_id= preg_rec.id, rch_user_id= rec.id, rch_id = "", date_of_birth= datetime.now() ) session.add(child_rec) session.commit() create_beneficiary_immunisation_tracking(child_rec.rch_id,datetime.now()) child_rch_data.append(child_rec.rch_id) add_to_cassandra(child_rec.rch_id, '3'); producer.ProduceBeneficiaryData('Add_Beneficiary', '3', child_rec.rch_id) record = {'status_code': 200,'woman_name':rec.name ,"record_pregnancy_id": preg_rec.pregnancy_id,"record_rch_ids":child_rch_data ,"status_msg": "Pregnancy created Successfully."} except Exception as e: session.rollback() error_email.send_email({'error':str(e),'url':request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_register_pregnancy.insert_one(log) return jsonify(record)
def post(self): """ Documentation Params: Specified below. Returns: JSON dict Sample Request: requests.post(url='http://192.168.1.22:5000/api/vaccine', params={"batch_id":"8992KOKOK","batch_type_id":"qqq","comment":"some random comment"}) """ parser = reqparse.RequestParser() parser.add_argument('package_id', type=str, required=True, help="package_id required") parser.add_argument('package_type_id', type=str, required=True, help="package_type_id required") parser.add_argument('uuid', type=str, required=True, help="uuid required") parser.add_argument('dose_count', type=str, required=True, help="dose_count required") parser.add_argument('name', type=str, required=True, help="name required") parser.add_argument('manufacturing_date', type=dict, required=True, help="manufacturing_date required") parser.add_argument('expiry_date', type=dict, required=True, help="expiry_date required") parser.add_argument('manufacturer_info', type=str, required=True, help="manufacturer_info required") parser.add_argument('from_station', type=dict, required=True, help="from_station required") parser.add_argument('to_station', type=dict, required=True, help="to_station required") parser.add_argument('adjustments', type=dict) parser.add_argument('comments', type=str) parser.add_argument('previous_uuid', type=str) parser.add_argument('status', type=str, required=True, help="status is required") args = parser.parse_args() try: log = {} log['request'] = args current_user = get_jwt_identity() now = datetime.now() data = { 'uuid': args['uuid'], 'package_id': args['package_id'], 'package_type_id': args['package_type_id'], 'name': args['name'], 'manufacturing_date': args['manufacturing_date'], 'manufacturer_info': args['manufacturer_info'], 'expiry_date': args['expiry_date'], 'to_station': json.dumps(args['to_station']), 'from_station': json.dumps(args['from_station']), 'previous_uuid': args['previous_uuid'], 'dose_count': args['dose_count'], 'user_id': str(current_user), 'adjustments': args['adjustments'] if args['adjustments'] else { 'doses': 0, 'remarks': 'auto_generated' }, 'comments': args['comments'] if args['comments'] else "nil", 'date_time': now.strftime("%m/%d/%Y, %H:%M:%S"), 'status': args['status'] } if args['adjustments']: if (int(args['adjustments']['doses']) > int( data['dose_count'])): return { 'status_code': 400, "status_msg": "Lost count seems to be greater than dose count." } if args['previous_uuid'] and args['status'] == "send": status = self.reduce_dose_count(data) if status != "Success": return {'status_code': 400, "status_msg": status} self.insert_to_cassandra(data, now) producer.ProduceVaccineData('Add_Vaccine', data) record = { 'status_code': 200, 'status_msg': "API is successfully posted." } except Exception as e: error_email.send_email({'error': str(e), 'url': '/vaccine/post'}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_vaccine_post.insert_one(log) return record
def discard_vaccine(): try: args = request.json log = {} current_user = get_jwt_identity() log['request'] = args loss = int(args['discard_vaccine']['count']) loss_reason = args['discard_vaccine']['reason'] sub_select_query = "SELECT * FROM kba.vaccine_sub_log WHERE id=" + args[ 'batch_id'] + ";" sub_log = cassandra_client.session.execute(sub_select_query)[0] if sub_log: old_count = sub_log.dose_count if old_count >= loss: new_count = old_count - loss update_query = "UPDATE kba.vaccine_sub_log SET dose_count=" + str( new_count) + " WHERE id=" + args['batch_id'] + ";" cassandra_client.session.execute(update_query) now = datetime.now() dict_previous_station = dict(sub_log.previous_station) dict_current_station = dict(sub_log.current_station) data = { 'uuid': args['batch_id'], 'package_id': str(sub_log.package_id), 'package_type_id': 't', 'name': sub_log.name, 'manufacturing_date': str(sub_log.manufacturing_date), 'manufacturer_info': sub_log.manufacturer_info, 'expiry_date': str(sub_log.expiry_date), 'to_station': str(dict_previous_station), 'from_station': str(dict_current_station), 'previous_uuid': str(sub_log.previous_uuid), 'dose_count': str(new_count), 'user_id': str(current_user), 'adjustments': { 'doses': 0, 'remarks': 'auto_generated' }, 'comments': loss_reason, 'date_time': now.strftime("%m/%d/%Y, %H:%M:%S"), 'status': "received" } VacTransferLogDB.insert_data( uuid.uuid4(), uuid.UUID(args['batch_id']), int(sub_log.previous_station_id), dict_previous_station, int(sub_log.current_station_id), dict_current_station, "Discard Transaction", loss_reason, str(current_user), "received", now) producer.ProduceVaccineData('Add_Vaccine', data) record = { 'status_code': 200, "status_msg": "API Posted Successfully" } else: record = { 'status_code': 400, "status_msg": "Loss is greater than current count." } else: record = { 'status_code': 404, "status_msg": "No Vaccine found for this ID." } except Exception as e: error_email.send_email({'error': str(e), 'url': request.url}) record = {'status_code': 500, "status_msg": str(e)} log['response'] = record ml_discard_vaccine.insert_one(log) return jsonify(record)