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_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 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 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 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 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_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 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 vaccination_coverage(): try: args = request.json log = {} log['request'] = args year = args['year'] vaccines = args['vaccine_doses'] sub_select_query = "SELECT * FROM kba.beneficiary_immunisation_tracking allow filtering;" sub_logs = cassandra_client.session.execute(sub_select_query) age_vaccines = session.query(AgeVaccine).all() ages = session.query(Age).all() response_data = {} age_object = {} for age in ages: age_vaccines = session.query(AgeVaccine).filter( AgeVaccine.age_id == age.id).all() for age_vaccine in age_vaccines: vaccine_dose = session.query(VaccineDose).filter( VaccineDose.id == age_vaccine.vaccine_dose_id).first() if vaccine_dose.id in vaccines: if age.code in age_object: age_object[age.code].append( {'name': vaccine_dose.name}) response_data[vaccine_dose.name] = { "beneficiaries_deserved": 0, "beneficiaries_administered": 0 } else: age_object[age.code] = [] age_object[age.code].append( {'name': vaccine_dose.name}) response_data[vaccine_dose.name] = { "beneficiaries_deserved": 0, "beneficiaries_administered": 0 } for sub_log in sub_logs: cassandra_vaccination_object = sub_log.vaccination_object for age in age_object.keys(): age_vaccine_object = cassandra_vaccination_object[age] for vaccine_obj in age_object[age]: vaccination_object = age_vaccine_object[ vaccine_obj['name']] vaccination_date_object = custom_functions.date_to_string( str(vaccination_object.expected_date), False) if vaccination_date_object['yyyy'] in year: response_data[vaccine_obj['name']][ 'beneficiaries_deserved'] = response_data[ vaccine_obj['name']][ 'beneficiaries_deserved'] + 1 if vaccination_object.vaccine_id: response_data[vaccine_obj['name']][ 'beneficiaries_administered'] = response_data[ vaccine_obj['name']][ 'beneficiaries_administered'] + 1 response = [] for vdname in response_data.keys(): obj = {} obj['name'] = vdname obj['beneficiaries_deserved'] = response_data[vdname][ 'beneficiaries_deserved'] obj['beneficiaries_administered'] = response_data[vdname][ 'beneficiaries_administered'] response.append(obj) if response: record = {'status_code': 200, 'data': response} else: record = { 'status_code': 404, "status_msg": "No data found.", 'data': response } 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_vaccination_coverage.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 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 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 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 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 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