def send_email(share_info, profile_id, disease): from email.mime.audio import MIMEAudio from email.mime.base import MIMEBase from email.mime.image import MIMEImage from email.mime.text import MIMEText import mimetypes import datetime attachments = [] file_name = disease + '.pdf' files = os.path.join(get_files_path(), profile_id, file_name) attachments.append({ "fname": files, "fcontent": file(files).read() }) if attachments: msg = """Disease Name is %(event)s <br> Provider Name is %(provider_name)s <br> <hr> %(event_body)s <br> Please see attachment <br> """%{'event': disease, 'provider_name': share_info.get('doctor_name'), 'event_body': share_info.get('email_body')} from frappe.utils.email_lib import sendmail sendmail([share_info.get('email_id')], subject="PHR-Disease Monitoring Data", msg=cstr(msg), attachments=attachments) make_log(profile_id, "Disease Monitoring", "Shared Via Email to provider %s"% share_info.get('doctor_name') , "DM of <b style='color: #89c148;'>%s</b> Shared Via Email to provider %s"%(disease,share_info.get('doctor_name'))) return {"returncode":1,"message_display":"Disease Monitoring records has been shared"}
def add_profile_to_db(data, profile_id): res = json.loads(data) actdata = res['actualdata'] dt = json.loads(actdata) sub = dt['person_firstname'] + " " + dt[ 'person_lastname'] + " " + "delinked Successfully" make_log(profile_id, "profile", "delink", sub) args = { 'person_firstname': dt['person_firstname'], 'person_middlename': dt['person_middlename'], 'person_lastname': dt['person_lastname'], 'email': dt['email'], 'mobile': dt['mobile'], 'received_from': 'Desktop', 'provider': 'false' } cie = frappe.db.get_value("LinkedPHR Images", {"profile_id": res['entityid']}, "barcode") path = "" if cie: path = cie else: path = "" ret_res = create_profile_in_db(res['entityid'], args, res, path) user = frappe.get_doc("User", frappe.session.user) send_phrs_mail(user.email, "PHR:Linked PHR Account Delinked", "templates/emails/delink_phr.html", {"name": args['person_firstname']}) sub = dt['person_firstname'] + " " + dt[ 'person_lastname'] + " " + "Profile Created Successfully" make_log(profile_id, "profile", "create", sub) return ret_res
def manage_dashboard(data,dashboard=None): obj = json.loads(data) dashboard_fields = json.loads(dashboard) sr = frappe.db.get_value("Shortcut",{"profile_id":obj.get('entityid')},"name") if sr: frappe.db.sql("""update `tabShortcut` set visits=0,events=0, medications=0,disease_monitoring=0, appointments=0,messages=0 where name='%s'"""%(sr)) update_values(dashboard_fields,sr,obj.get('entityid')) sub = "Dashboard Configuration Done" make_log(obj.get('entityid'),"profile","Dashboard",sub) return "Dashboard Configuration Updated" else: sr = frappe.get_doc({ "doctype":"Shortcut", "profile_id":obj.get('entityid'), "created_via": "Web" }) sr.ignore_permissions = True sr.insert() update_values(dashboard_fields,sr.name,obj.get('entityid')) sub = "Dashboard Configuration Done" make_log(obj.get('entityid'),"profile","Dashboard",sub) return "Dashboard Configuration Done"
def create_event(data): response = '' request_type="POST" url = "%s/createEvent"%get_base_url() event_data={ "event_title": data.get('event_title'), "profile_id": data.get('profile_id'), "str_event_date": data.get('event_date'), "received_from": "Desktop", "event_symptoms" : data.get('complaints'), "event_descripton": data.get('event_descripton') } event_date = datetime.datetime.strptime(event_data.get('str_event_date'), "%d/%m/%Y").strftime('%Y-%m-%d') if date_diff(event_date, nowdate()) > 0: frappe.msgprint("Event Date should be past or current") return {"exe":"Event Date should be past or current"} else: response=get_response(url, json.dumps(event_data), request_type) make_log(json.loads(response.text).get('entityid'),"Event","Create","Event Created") return json.loads(response.text)
def create_event(data): response = '' request_type = "POST" url = "%s/createEvent" % get_base_url() event_data = { "event_title": data.get('event_title'), "profile_id": data.get('profile_id'), "str_event_date": data.get('event_date'), "received_from": "Desktop", "event_symptoms": data.get('complaints'), "event_descripton": data.get('event_descripton') } event_date = datetime.datetime.strptime(event_data.get('str_event_date'), "%d/%m/%Y").strftime('%Y-%m-%d') if date_diff(event_date, nowdate()) > 0: frappe.msgprint("Event Date should be past or current") return {"exe": "Event Date should be past or current"} else: response = get_response(url, json.dumps(event_data), request_type) make_log( json.loads(response.text).get('entityid'), "Event", "Create", "Event Created") return json.loads(response.text)
def share_via_email(data): attachments = [] files = data.get('files') for fl in files: fname = os.path.join(get_files_path(), fl) attachments.append({ "fname": fname, "fcontent": file(fname).read() }) if attachments: msg = """Event Name is %(event)s <br> Event Date is %(event_date)s <br> Provider Name is %(provider_name)s <br> Sharing reason is %(reason)s <br> <hr> %(event_body)s <br> Please find below attachment(s) <br> """%{'event': data.get('event_title'), 'event_date': data.get('event_date'), 'provider_name': data.get('doctor_name'), 'event_body': data.get('email_body'), 'reason': data.get('reason')} from frappe.utils.email_lib import sendmail sendmail([data.get('email_id')], subject="PHR-Event Data", msg=cstr(msg), attachments=attachments) make_log(data.get('profile_id'),"Event","Shared Via Email","Event Shared Via Email to %s"%(data.get('email_id'))) return """Selected image(s) has been shared with %(provider_name)s for event %(event)s """%{ 'event': data.get('event_title'), 'provider_name': data.get('doctor_name')} else: return 'Please select file(s) for sharing'
def share_via_email(data): attachments = [] files = data.get('files') patient_name = frappe.db.get_value("User", {"profile_id":data.get('profile_id')}, 'concat(first_name, " ", last_name)') or data.get('lphr_name') for fl in files: fname = os.path.join(get_files_path(), fl) attachments.append({ "fname": fname.split('/')[-1:][0], "fcontent": file(fname).read() }) if attachments: msg = """Event Name is %(event)s <br> Event Date is %(event_date)s <br> Provider Name is %(provider_name)s <br> Sharing reason is %(reason)s <br> <hr> %(event_body)s <br> Please find below attachment(s) <br> """%{'event': data.get('event_title'), 'event_date': data.get('event_date') or data.get("str_visit_date"), 'provider_name': data.get('doctor_name'), 'event_body': data.get('email_body'), 'reason': data.get('reason')} from frappe.utils.email_lib import sendmail sendmail([data.get('email_id')], subject="PHR-Event Data", msg=cstr(msg), attachments=attachments) make_log(data.get('profile_id'),"Event","Shared Via Email","Event <b style='color: #89c148;'>%s</b> Shared Via Email %s"%(data.get('event_title'), data.get('email_id'))) # args = {"patient":patient_name,"email":data.get('email_id')} # notify_provider(data.get('doctor_id'),data.get('profile_id'),"Event Share Email",args) return { "returncode":1,"message_summary":"Selected image(s) has been shared with %(provider_name)s for event %(event)s "%{'event': data.get('event_title'),'provider_name': data.get('doctor_name')}} else: return {"returncode":0,"message_summary":"Please select file(s) for sharing"}
def update_profile_solr(data, dashboard=None): request_type = "POST" user_details = json.loads(data) if not_duplicate_contact(user_details.get('mobile'), user_details.get('email')): url = get_base_url() + "/updateProfile" from phr.phr.phr_api import get_response response = get_response(url, data, request_type) res = json.loads(response.text) profile = json.loads(data) if res['returncode'] == 102: sub = "Profile Updated Successfully" make_log(profile.get('entityid'), "profile", "update", sub) update_user_details(profile) mob_code = make_mv_entry(user_details.get('mobile'), profile.get('entityid')) return { "rtcode": 100, "msg": "Profile Updated Successfully", "mob_no": user_details.get('mobile'), "user": user_details.get('email'), "mobile_code": mob_code } else: return {"rtcode": 101, "msg": "Error While Updating Profile"} else: return { "rtcode": 201, "msg": "Maintioned contact number is already registered with another profile." }
def manage_dashboard(data, dashboard=None): obj = json.loads(data) dashboard_fields = json.loads(dashboard) sr = frappe.db.get_value("Shortcut", {"profile_id": obj.get('entityid')}, "name") if sr: frappe.db.sql("""update `tabShortcut` set visits=0,events=0, medications=0,disease_monitoring=0, appointments=0,messages=0 where name='%s'""" % (sr)) update_values(dashboard_fields, sr, obj.get('entityid')) sub = "Dashboard Configuration Done" make_log(obj.get('entityid'), "profile", "Dashboard", sub) return "Dashboard Configuration Updated" else: sr = frappe.get_doc({ "doctype": "Shortcut", "profile_id": obj.get('entityid'), "created_via": "Web" }) sr.ignore_permissions = True sr.insert() update_values(dashboard_fields, sr.name, obj.get('entityid')) sub = "Dashboard Configuration Done" make_log(obj.get('entityid'), "profile", "Dashboard", sub) return "Dashboard Configuration Done"
def manage_notifications(data, dashboard=None): obj = json.loads(data) dashboard_fields = json.loads(dashboard) mn = frappe.db.get_value("Notification Configuration", {"profile_id": obj.get('entityid')}, "name") if mn: frappe.db.sql( """update `tabNotification Configuration` set linked_phr=0,to_do=0 where name='%s'""" % (mn)) update_values_notify(dashboard_fields, mn, obj.get('entityid')) sub = "Notifications Configuration Done" make_log(obj.get('entityid'), "profile", "Notifications", sub) return "Notification Settings Updated" else: mn = frappe.get_doc({ "doctype": "Notification Configuration", "profile_id": obj.get('entityid'), "created_via": "Web" }) mn.ignore_permissions = True mn.insert() update_values_notify(dashboard_fields, mn.name, obj.get('entityid')) sub = "Notifications Configuration Done" make_log(obj.get('entityid'), "profile", "Notifications", sub) return "Notification Settings Done"
def make_medication_entry(data): c_medication=save_data(data) response=get_medication_data(data) medication=json.loads(data) sub="Medication for"+" "+medication.get('medicine_name')+" created" make_log(medication.get('profile_id'),"Medication","create",sub) return response
def make_appomiments_entry(data): c_medication = save_data(data) response = get_appointments(data) appointment = json.loads(data) sub = "Appointment created with" + " " + appointment.get('provider') make_log(appointment.get('profile_id'), "Appointment", "create", sub) return response
def add_profile_to_db(data,profile_id): res = json.loads(data) actdata = res['actualdata'] dt = json.loads(actdata) sub = dt['person_firstname']+" "+dt['person_lastname']+" "+"delinked Successfully" make_log(profile_id,"profile","delink",sub) args = {'person_firstname':dt['person_firstname'],'person_middlename':dt['person_middlename'],'person_lastname':dt['person_lastname'],'email':dt['email'],'mobile':dt['mobile'],'received_from':'Desktop','provider':'false'} cie = frappe.db.get_value("LinkedPHR Images",{"profile_id":res['entityid']}, ["barcode", "profile_image"], as_dict=1) path = "" if cie.get('barcode'): path = cie.get('barcode') else: path = "" if cie.get('profile_image'): args['user_image'] = cie.get('profile_image') else: args['user_image']= "" ret_res = create_profile_in_db(res['entityid'],args,res,path) user = frappe.get_doc("User",frappe.session.user) send_phrs_mail(user.email,"PHR:Linked PHR Account Delinked","templates/emails/delink_phr.html",{"name":args['person_firstname']}) msg = get_sms_template("delink",{"phr_name":args['person_firstname']}) if user.contact: rec_list = [] rec_list.append(user.contact) send_sms(rec_list,msg=msg) sub = dt['person_firstname']+" "+dt['person_lastname']+" "+"Profile Created Successfully" make_log(profile_id,"profile","create",sub) return ret_res
def make_medication_entry(data): mdata = json.loads(data) if day_exists(data): try: c_medication = save_data(data) if mdata.get('received_from') and mdata.get( 'received_from') == "Mobile": response = c_medication else: response = get_medication_data(data) medication = json.loads(data) sub = "Medication for" + " " + medication.get( 'medicine_name') + " created" make_log(medication.get('profile_id'), "Medication", "create", sub) return response except ValueError: msg = "Unexpected error: Invalid Date" return {"exe": msg} except: msg = "Unexpected error: %s " % sys.exc_info()[0] return {"exe": msg} else: return {'exe': 'Selected day is not in specified date range'}
def update_values_notify(dashboard_fields, name, profile_id): for d in dashboard_fields: frappe.db.sql( """update `tabNotification Configuration` set %s=1 where name='%s'""" % (d, name)) frappe.db.commit() sub = "Notifications Configuration Done" make_log(profile_id, "profile", "Notifications", sub)
def share_via_email(data): attachments = [] files = data.get('files') patient_name = frappe.db.get_value( "User", {"profile_id": data.get('profile_id')}, 'concat(first_name, " ", last_name)') or data.get('lphr_name') for fl in files: fname = os.path.join(get_files_path(), fl) attachments.append({ "fname": fname.split('/')[-1:][0], "fcontent": file(fname).read() }) if attachments: msg = """Event Name is %(event)s <br> Event Date is %(event_date)s <br> Provider Name is %(provider_name)s <br> Sharing reason is %(reason)s <br> <hr> %(event_body)s <br> Please find below attachment(s) <br> """ % { 'event': data.get('event_title'), 'event_date': data.get('event_date') or data.get("str_visit_date"), 'provider_name': data.get('doctor_name'), 'event_body': data.get('email_body'), 'reason': data.get('reason') } from frappe.utils.email_lib import sendmail sendmail([data.get('email_id')], subject="PHR-Event Data", msg=cstr(msg), attachments=attachments) make_log( data.get('profile_id'), "Event", "Shared Via Email", "Event <b style='color: #89c148;'>%s</b> Shared Via Email %s" % (data.get('event_title'), data.get('email_id'))) # args = {"patient":patient_name,"email":data.get('email_id')} # notify_provider(data.get('doctor_id'),data.get('profile_id'),"Event Share Email",args) return { "returncode": 1, "message_summary": "Selected image(s) has been shared with %(provider_name)s for event %(event)s " % { 'event': data.get('event_title'), 'provider_name': data.get('doctor_name') } } else: return { "returncode": 0, "message_summary": "Please select file(s) for sharing" }
def make_appomiments_entry(data): if valide_date(data): c_medication = save_data(data) response = get_appointments(data) appointment = json.loads(data) sub = "Appointment created with"+" "+appointment.get('provider') make_log(appointment.get('profile_id'),"Appointment","create",sub) return response else: return {'exe': "Appointment Date/Time Should not be less than Current Date/Time"}
def save_data_to_solr(args): request_type = "POST" url = get_base_url()+'updatedismonitoring' response = get_response(url,args,request_type) res = response.text if res: jsonobj=json.loads(res) if jsonobj['returncode']==132 or jsonobj['returncode']==133: dm=json.loads(args) sub="Disease Monitoring created" make_log(dm['profile_id'],"Disease Monitoring (CR)","create",sub)
def save_data_to_solr(args): request_type = "POST" url = get_base_url() + 'updatedismonitoring' response = get_response(url, args, request_type) res = response.text if res: jsonobj = json.loads(res) if jsonobj['returncode'] == 132 or jsonobj['returncode'] == 133: dm = json.loads(args) sub = "Disease Monitoring created" make_log(dm['profile_id'], "Disease Monitoring (CR)", "create", sub)
def share_via_phr(share_info, profile_id, disease): dm_sharing = frappe.new_doc('Disease Sharing Log') file_name = disease + '.pdf' dm_sharing.disease_name = disease dm_sharing.from_profile = profile_id dm_sharing.to_profile = share_info.get('doctor_id') dm_sharing.pdf_path = os.path.join(get_files_path(), profile_id, file_name) dm_sharing.save(ignore_permissions=True) make_sharing_request(share_info, disease, dm_sharing, profile_id) make_log(profile_id, "Disease Monitoring", "Shared DM over PHR account to provider ", "DM of <b style='color: #89c148;'>%s</b> has been shared with provider <b style='color: #89c148;'>%s</b> \ till <b style='color: #89c148;'>%s</b>"% (disease, share_info.get('doctor_name'), share_info.get('sharing_duration') )) return {"returncode":1,"message_display":"Disease Monitoring records has been shared"}
def make_appomiments_entry(data): if valide_date(data): c_medication = save_data(data) response = get_appointments(data) appointment = json.loads(data) sub = "Appointment created with" + " " + appointment.get('provider') make_log(appointment.get('profile_id'), "Appointment", "create", sub) return response else: return { 'exe': "Appointment Date/Time Should not be less than Current Date/Time" }
def create_provider_in_solr(data,profile_id): request_type="POST" url=get_base_url()+'createProvider' from phr.phr.phr_api import get_response response=get_response(url,data,request_type) res=json.loads(response.text) if res['returncode']==129: link_provider(res, data, profile_id) create_provider_master_entry(res, data) provider=json.loads(data) sub="created provider "+provider.get('name') make_log(profile_id,"provider","create",sub) return res return res
def create_provider_in_solr(data, profile_id): request_type = "POST" url = get_base_url() + 'createProvider' from phr.phr.phr_api import get_response response = get_response(url, data, request_type) res = json.loads(response.text) if res['returncode'] == 129: link_provider(res, data, profile_id) create_provider_master_entry(res, data) provider = json.loads(data) sub = "created provider " + provider.get('name') make_log(profile_id, "provider", "create", sub) return res return res
def share_via_phr(share_info, profile_id, disease): dm_sharing = frappe.new_doc('Disease Sharing Log') file_name = disease + '.pdf' dm_sharing.disease_name = disease dm_sharing.from_profile = profile_id dm_sharing.to_profile = share_info.get('doctor_id') dm_sharing.pdf_path = os.path.join(get_files_path(), profile_id, file_name) dm_sharing.save(ignore_permissions=True) make_sharing_request(share_info, disease, dm_sharing, profile_id) make_log(profile_id, "Disease Monitoring", "Shared over PHR account to provider %s"% share_info.get('doctor_name') , "Shared over PHR account to provider %s"% share_info.get('doctor_name')) args = {"dr":share_info.get('doctor_name')} email_msg = "Patient has shared DM with You. \n\n Thank you. \nTeam HealthSnapp." from phr.templates.pages.event import notify_provider notify_provider(share_info.get('doctor_id'),profile_id,"Event Share",args,email_msg) return "Disease Monitoring records has been shared"
def update_profile_solr(data, dashboard=None): request_type = "POST" #url="http://88.198.52.49:7974/phr-api/updateProfile" url = get_base_url() + "/updateProfile" from phr.phr.phr_api import get_response response = get_response(url, data, request_type) res = json.loads(response.text) print res['returncode'] p = json.loads(data) if res['returncode'] == 102: sub = "Profile Updated Successfully" make_log(p.get('entityid'), "profile", "update", sub) update_user_details(p) return "Profile Updated Successfully" else: return "Error While Updating Profile"
def update_event(data): response = '' request_type="POST" url="%s/createupdateevent"%get_base_url() event_data = { "entityid":data.get('entityid'), "event_complaint_list":[], "profile_owner_name": frappe.db.get_value('User', {'profile_id':data.get('profile_id')}, 'first_name'), "status": "active", "event_diseasemontoring": False, "event_symptoms" :data.get('complaints'), "event_title": data.get('event_title'), "profile_id": data.get('profile_id'), "str_event_date": data.get('event_date'), "event_descripton": data.get('event_descripton'), "visit_files": data.get('dms_file_list'), "doctor_id": data.get('doctor_id'), "doctor_name": data.get("doctor_name"), "visit_descripton": data.get('event_descripton'), "received_from": "Desktop", "str_visit_date": data.get('visit_date'), "diagnosis_desc": data.get('diagnosis_desc') } import datetime event_date = datetime.datetime.strptime(event_data.get('str_event_date'), "%d/%m/%Y").strftime('%Y-%m-%d') visit_date = datetime.datetime.strptime(event_data.get('str_visit_date'), "%d/%m/%Y").strftime('%Y-%m-%d') if date_diff(visit_date, nowdate()) > 0: frappe.msgprint("Visit Date could not be greater than current date") return {"exe":"Visit Date could not be greater than current date"} elif date_diff(visit_date, event_date) < 0: frappe.msgprint("Visit Date should not be less than Event Date") return {"exe":"Event Date should be past or current"} else: response=get_response(url, json.dumps(event_data), request_type) make_log(data.get('entityid'),"Event","Update","Event Updated") if data.get('cname'): text_msg = "%s Has Updated Event,\n\n Team Healthsnapp"%data.get('cname') email_msg = "" from phr.templates.pages.profile import notify_about_linked_phrs notify_about_linked_phrs(data.get('pid'),email_msg,text_msg,"Event",data.get('cname')) return json.loads(response.text)
def update_password(data, dashboard=None): usrobj = json.loads(data) old_password = usrobj.get('old_password') new_password = usrobj.get('new_password') user = frappe.db.get_value("User", {"profile_id": usrobj.get('entityid')}) print[user, old_password, new_password] if not new_password: return _("Cannot Update: Please Enter Valid Password") if old_password: if not frappe.db.sql( """select user from __Auth where password=password(%s) and user=%s""", (old_password, user)): return "Cannot Update: Incorrect Password" _update_password(user, new_password) sub = "Password Updated Successfully" make_log(usrobj.get('entityid'), "profile", "update Password", sub) return "Password Updated Successfully"
def make_medication_entry(data): if day_exists(data): try: c_medication=save_data(data) response=get_medication_data(data) medication=json.loads(data) sub="Medication for"+" "+medication.get('medicine_name')+" created" make_log(medication.get('profile_id'),"Medication","create",sub) return response except ValueError: msg = "Unexpected error: Invalid Date" return {"exe" : msg} except : msg = "Unexpected error: %s "% sys.exc_info()[0] return {"exe" : msg} else: return {'exe': 'Selected day is not in specified date range'}
def update_event(data): response = '' request_type = "POST" url = "%s/createupdateevent" % get_base_url() owner = frappe.db.get_value('User', {'profile_id': data.get('profile_id')}, 'first_name') event_data = { "entityid": data.get('entityid'), "event_complaint_list": [], "profile_owner_name": owner if owner else data.get("cname"), "status": "active", "event_diseasemontoring": False, "event_symptoms": data.get('complaints'), "event_title": data.get('event_title'), "profile_id": data.get('profile_id'), "str_event_date": data.get('event_date'), "event_descripton": data.get('event_descripton'), "visit_files": data.get('dms_file_list'), "doctor_id": data.get('doctor_id'), "doctor_name": data.get("doctor_name"), "visit_descripton": data.get('event_descripton'), "received_from": "Desktop", "str_visit_date": data.get('visit_date'), "diagnosis_desc": data.get('diagnosis_desc') } import datetime event_date = datetime.datetime.strptime(event_data.get('str_event_date'), "%d/%m/%Y").strftime('%Y-%m-%d') visit_date = datetime.datetime.strptime(event_data.get('str_visit_date'), "%d/%m/%Y").strftime('%Y-%m-%d') if date_diff(visit_date, nowdate()) > 0: frappe.msgprint("Visit Date could not be greater than current date") return {"exe": "Visit Date could not be greater than current date"} elif date_diff(visit_date, event_date) < 0: frappe.msgprint("Visit Date should not be less than Event Date") return {"exe": "Event Date should be past or current"} else: response = get_response(url, json.dumps(event_data), request_type) make_log(data.get('entityid'), "Event", "Update", "Event Updated") return json.loads(response.text)
def update_profile_solr(data,dashboard=None): request_type = "POST" user_details = json.loads(data) if not_duplicate_contact(user_details.get('mobile'),user_details.get('email')): url = get_base_url()+"/updateProfile" from phr.phr.phr_api import get_response response = get_response(url,data,request_type) res = json.loads(response.text) profile = json.loads(data) if res['returncode']==102: sub = "Profile Updated Successfully" make_log(profile.get('entityid'),"profile","update",sub) update_user_details(profile) mob_code = make_mv_entry(user_details.get('mobile'),profile.get('entityid')) return {"rtcode":100,"msg":"Profile Updated Successfully","mob_no":user_details.get('mobile'),"user":user_details.get('email'),"mobile_code":mob_code} else: return {"rtcode":101,"msg":"Error While Updating Profile"} else: return {"rtcode":201,"msg":"Maintioned contact number is already registered with another profile."}
def send_email(share_info, profile_id, disease): from email.mime.audio import MIMEAudio from email.mime.base import MIMEBase from email.mime.image import MIMEImage from email.mime.text import MIMEText import mimetypes import datetime attachments = [] file_name = disease + '.pdf' files = os.path.join(get_files_path(), profile_id, file_name) attachments.append({"fname": files, "fcontent": file(files).read()}) if attachments: msg = """Disease Name is %(event)s <br> Provider Name is %(provider_name)s <br> <hr> %(event_body)s <br> Please see attachment <br> """ % { 'event': disease, 'provider_name': share_info.get('doctor_name'), 'event_body': share_info.get('email_body') } from frappe.utils.email_lib import sendmail sendmail([share_info.get('email_id')], subject="PHR-Disease Monitoring Data", msg=cstr(msg), attachments=attachments) make_log( profile_id, "Disease Monitoring", "Shared Via Email to provider %s" % share_info.get('doctor_name'), "DM of <b style='color: #89c148;'>%s</b> Shared Via Email to provider %s" % (disease, share_info.get('doctor_name'))) return { "returncode": 1, "message_display": "Disease Monitoring records has been shared" }
def share_via_phr(share_info, profile_id, disease): dm_sharing = frappe.new_doc('Disease Sharing Log') file_name = disease + '.pdf' dm_sharing.disease_name = disease dm_sharing.from_profile = profile_id dm_sharing.to_profile = share_info.get('doctor_id') dm_sharing.pdf_path = os.path.join(get_files_path(), profile_id, file_name) dm_sharing.save(ignore_permissions=True) make_sharing_request(share_info, disease, dm_sharing, profile_id) make_log( profile_id, "Disease Monitoring", "Shared DM over PHR account to provider ", "DM of <b style='color: #89c148;'>%s</b> has been shared with provider <b style='color: #89c148;'>%s</b> \ till <b style='color: #89c148;'>%s</b>" % (disease, share_info.get('doctor_name'), share_info.get('sharing_duration'))) return { "returncode": 1, "message_display": "Disease Monitoring records has been shared" }
def update_lphr_barcode(path, profile_id): cie = frappe.db.get_value("LinkedPHR Images", {"profile_id": profile_id}, "barcode") uimage = get_gravatar(profile_id) file_path = '/files/' + profile_id + '/' + profile_id + ".svg" if cie: frappe.db.sql("""update `tabLinkedPHR Images` set barcode='%s',profile_image='%s' where profile_id='%s'""" % (file_path, uimage, profile_id)) frappe.db.commit() sub = "Barcode Uploaded Successfully " + path make_log(profile_id, "profile", "Linked PHR Image Upload", sub) return "Image Uploaded Successfully" else: lp = frappe.new_doc("LinkedPHR Images") lp.profile_id = profile_id lp.barcode = file_path lp.save(ignore_permissions=True) sub = "Barcode Uploaded Successfully " + file_path make_log(profile_id, "profile", "Linked PHR Image Upload", sub) return "Image Uploaded Successfully"
def update_user_image(path, profile_id): ue = frappe.db.get_value("User", {"profile_id": profile_id}, "user_image") if ue: user = frappe.get_doc("User", frappe.session.user) user.user_image = path user.save(ignore_permissions=True) sub = "Image Uploaded Successfully " + path make_log(profile_id, "profile", "Image Upload", sub) frappe.local.cookie_manager.set_cookie("user_image", path or "") else: cie = frappe.db.get_value("LinkedPHR Images", {"profile_id": profile_id}, "profile_image") if cie: frappe.db.sql("""update `tabLinkedPHR Images` set profile_image='%s' where profile_id='%s'""" % (path, profile_id)) frappe.db.commit() sub = "Image Uploaded Successfully " + path make_log(profile_id, "profile", "Linked PHR Image Upload", sub) else: lp = frappe.new_doc("LinkedPHR Images") lp.profile_id = profile_id lp.profile_image = path lp.save(ignore_permissions=True) sub = "Image Uploaded Successfully " + path make_log(profile_id, "profile", "Linked PHR Image Upload", sub)
def update_event(data): print "---------------update event---------------------" print data print "------------------------------------------------" response = '' request_type="POST" url="%s/createupdateevent"%get_base_url() event_data = { "entityid":data.get('entityid'), "event_complaint_list":[], "profile_owner_name": frappe.db.get_value('User', {'profile_id':data.get('profile_id')}, 'first_name'), "status": "active", "event_diseasemontoring": False, "event_symptoms" :data.get('complaints'), "event_title": data.get('event_title'), "profile_id": data.get('profile_id'), "str_event_date": data.get('event_date'), "event_descripton": data.get('event_descripton'), "visit_files": data.get('dms_file_list'), "doctor_id": data.get('doctor_id'), "doctor_name": data.get("doctor_name"), "visit_descripton": data.get('event_descripton'), "received_from": "Desktop", "str_visit_date": data.get('visit_date'), "diagnosis_desc": data.get('diagnosis_desc') } import datetime event_date = datetime.datetime.strptime(event_data.get('str_event_date'), "%d/%m/%Y").strftime('%Y-%m-%d') if date_diff(event_date, nowdate()) > 0: frappe.msgprint("Please sect valid date") else: response=get_response(url, json.dumps(event_data), request_type) make_log(data.get('entityid'),"Event","Update","Event Updated") return json.loads(response.text)
def manage_notifications(data,dashboard=None): obj = json.loads(data) dashboard_fields = json.loads(dashboard) mn = frappe.db.get_value("Notification Configuration",{"profile_id":obj.get('entityid')},"name") if mn: frappe.db.sql("""update `tabNotification Configuration` set linked_phr=0,to_do=0 where name='%s'"""%(mn)) update_values_notify(dashboard_fields,mn,obj.get('entityid')) sub = "Notifications Configuration Done" make_log(obj.get('entityid'),"profile","Notifications",sub) return "Notification Settings Updated" else: mn = frappe.get_doc({ "doctype":"Notification Configuration", "profile_id":obj.get('entityid'), "created_via": "Web" }) mn.ignore_permissions = True mn.insert() update_values_notify(dashboard_fields,mn.name,obj.get('entityid')) sub = "Notifications Configuration Done" make_log(obj.get('entityid'),"profile","Notifications",sub) return "Notification Settings Done"
def update_password(data,dashboard=None): usrobj = json.loads(data) old_password = usrobj.get('old_password') new_password = usrobj.get('new_password') if new_password != usrobj.get('cnf_new_password'): return " Cannot Update: New Password and Confirm Password fields are not matching " user = frappe.db.get_value("User",{"profile_id":usrobj.get('entityid')}) if not new_password: return _("Cannot Update: Please Enter Valid Password") if old_password: if not frappe.db.sql("""select user from __Auth where password=password(%s) and user=%s""", (old_password, user)): return "Cannot Update: Old Password is Incorrect" _update_password(user, new_password) frappe.db.set_value("User",user,"password_str",new_password) sub = "Password Updated Successfully" make_log(usrobj.get('entityid'),"profile","update Password",sub) return "Password Updated Successfully"
def update_lphr_barcode(path,profile_id): cie=frappe.db.get_value("LinkedPHR Images",{"profile_id":profile_id},"barcode") # uimage=get_gravatar(profile_id) uimage = "/assets/phr/images/profile-photo.jpg" file_path='/files/'+profile_id+'/'+profile_id+".svg" if cie: frappe.db.sql("""update `tabLinkedPHR Images` set barcode='%s',profile_image='%s' where profile_id='%s'"""%(file_path,uimage,profile_id)) frappe.db.commit() sub="Barcode Uploaded Successfully "+path make_log(profile_id,"profile","Linked PHR Image Upload",sub) return "Image Uploaded Successfully" else: lp=frappe.new_doc("LinkedPHR Images") lp.profile_image=uimage lp.profile_id=profile_id lp.barcode=file_path lp.profile_image = uimage lp.save(ignore_permissions=True) sub="Barcode Uploaded Successfully "+file_path make_log(profile_id,"profile","Linked PHR Image Upload",sub) return "Image Uploaded Successfully"
def update_password(data, dashboard=None): usrobj = json.loads(data) old_password = usrobj.get('old_password') new_password = usrobj.get('new_password') if new_password != usrobj.get('cnf_new_password'): return " Cannot Update: New Password and Confirm Password fields are not matching " user = frappe.db.get_value("User", {"profile_id": usrobj.get('entityid')}) if not new_password: return _("Cannot Update: Please Enter Valid Password") if old_password: if not frappe.db.sql( """select user from __Auth where password=password(%s) and user=%s""", (old_password, user)): return "Cannot Update: Old Password is Incorrect" _update_password(user, new_password) frappe.db.set_value("User", user, "password_str", new_password) sub = "Password Updated Successfully" make_log(usrobj.get('entityid'), "profile", "update Password", sub) return "Password Updated Successfully"
def delink_phr_solr(data, id, profile_id): solr_op = 'unlinkProfile' url = get_base_url() + solr_op request_type = 'POST' barcode = get_barcode() #jsonobj=json.loads(data) data["recieved_from"] = "Desktop" #data["barcode"]=str(barcode) jsonobj = { "entityid": id, "linking_id": profile_id, "received_from": "Desktop" } from phr.phr.phr_api import get_response response = get_response(url, json.dumps(jsonobj), request_type) res = json.loads(response.text) print res if res['returncode'] == 121: path = get_image_path(barcode, res['entityid']) print res sub = res['entityid'] + "delinked Successfully" make_log(profile_id, "profile", "delink", sub) actdata = res['actualdata'] dt = json.loads(actdata) args = { 'person_firstname': dt['person_firstname'], 'person_middlename': dt['person_middlename'], 'person_lastname': dt['person_lastname'], 'email': dt['email'], 'mobile': dt['mobile'], 'received_from': 'Desktop', 'provider': 'false', 'barcode': str(barcode) } ret_res = create_profile_in_db(res['entityid'], args, res, path) return ret_res
def update_user_image(path, profile_id): ue = frappe.db.get_value("User",{"profile_id":profile_id},"user_image") if ue: user = frappe.get_doc("User",frappe.session.user) user.user_image = path user.save(ignore_permissions=True) sub = "Image Uploaded Successfully "+path make_log(profile_id,"profile","Image Upload",sub) frappe.local.cookie_manager.set_cookie("user_image", path or "") else: cie = frappe.db.get_value("LinkedPHR Images",{"profile_id":profile_id},"profile_image") if cie: frappe.db.sql("""update `tabLinkedPHR Images` set profile_image='%s' where profile_id='%s'"""%(path,profile_id)) frappe.db.commit() sub = "Image Uploaded Successfully "+path make_log(profile_id,"profile","Linked PHR Image Upload",sub) else: lp = frappe.new_doc("LinkedPHR Images") lp.profile_id = profile_id lp.profile_image = path lp.save(ignore_permissions=True) sub = "Image Uploaded Successfully "+path make_log(profile_id,"profile","Linked PHR Image Upload",sub)
def share_via_providers_account(data): event_dict = {} sub_event_count = {} if not data.get('files'): event_data = { "sharelist": [ { "to_profile_id": data.get('doctor_id'), "received_from":"desktop", "from_profile_id": data.get('profile_id'), "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "access_type": "RDW", "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') } ] } if data.get('event_id'): for shared_meta in event_data.get('sharelist'): shared_meta["visit_tag_id"] = data.get('entityid') url="%s/sharephr/sharemultiplevisit"%get_base_url() else: url="%s/sharephr/sharemultipleevent"%get_base_url() request_type="POST" response=get_response(url, json.dumps(event_data), request_type) files_list = get_files_doc(event_data, data, None, event_dict, sub_event_count) make_sharing_request(event_data, data, files_list, event_dict, sub_event_count) make_log(data.get('profile_id'),"Event","Shared Via Provider","Event <b style='color: #89c148;'>%s</b> has shared with Provider <b style='color: #89c148;'>%s</b> \ for duration <b style='color: #89c148;'>%s</b>"%(data.get('event_title'), data.get('doctor_name'), data.get('sharing_duration'))) return {"returncode":2,"message_summary":eval(json.loads(response.text).get('sharelist'))[0].get('message_summary')} else: sharelist = [] file_path = [] for fl in data.get('files'): file_path.append(fl) file_details = fl.split('/') sharelist.append({ "to_profile_id": data.get('doctor_id'), "received_from":"desktop", "from_profile_id": data.get('profile_id'), "visit_tag_id": file_details[4], "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "tag_id": file_details[4] + '-' + cstr(file_details[2].split('-')[1]) + cstr(file_details[3].split('_')[1]) , "file_id": [file_details[5].replace('-watermark', '')], "file_access": ['RW'], "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') }) request_type="POST" url = "%s/sharephr/sharemultiplevisitfiles"%get_base_url() event_data = {'sharelist': sharelist} response=get_response(url, json.dumps(event_data), request_type) event_data['file_path'] = file_path files_list = get_files_doc(event_data, data, None, event_dict, sub_event_count) make_sharing_request(event_data, data, files_list, event_dict, sub_event_count) make_log(data.get('profile_id'),"Event","Shared Via Provider","Event <b style='color: #89c148;'>%s</b> has been shared with Provider <b style='color: #89c148;'>%s</b> \ till <b style='color: #89c148;'>%s</b>"%(data.get('event_title'), data.get('doctor_name'), data.get('sharing_duration'))) return {"returncode":2,"message_summary":json.loads(json.loads(response.text).get('sharelist'))[0].get('message_summary')}
def share_via_providers_account(data): event_dict = {} sub_event_count = {} if not data.get('files'): event_data = { "sharelist": [{ "to_profile_id": data.get('doctor_id'), "received_from": "desktop", "from_profile_id": data.get('profile_id'), "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "access_type": "RDW", "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') }] } if data.get('event_id'): for shared_meta in event_data.get('sharelist'): shared_meta["visit_tag_id"] = data.get('entityid') url = "%s/sharephr/sharemultiplevisit" % get_base_url() else: url = "%s/sharephr/sharemultipleevent" % get_base_url() request_type = "POST" response = get_response(url, json.dumps(event_data), request_type) files_list = get_files_doc(event_data, data, None, event_dict, sub_event_count) make_sharing_request(event_data, data, files_list, event_dict, sub_event_count) make_log( data.get('profile_id'), "Event", "Shared Via Provider", "Event <b style='color: #89c148;'>%s</b> has shared with Provider <b style='color: #89c148;'>%s</b> \ for duration <b style='color: #89c148;'>%s</b>" % (data.get('event_title'), data.get('doctor_name'), data.get('sharing_duration'))) return { "returncode": 2, "message_summary": eval(json.loads( response.text).get('sharelist'))[0].get('message_summary') } else: sharelist = [] file_path = [] for fl in data.get('files'): file_path.append(fl) file_details = fl.split('/') sharelist.append({ "to_profile_id": data.get('doctor_id'), "received_from": "desktop", "from_profile_id": data.get('profile_id'), "visit_tag_id": file_details[4], "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "tag_id": file_details[4] + '-' + cstr(file_details[2].split('-')[1]) + cstr(file_details[3].split('_')[1]), "file_id": [file_details[5].replace('-watermark', '')], "file_access": ['RW'], "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') }) request_type = "POST" url = "%s/sharephr/sharemultiplevisitfiles" % get_base_url() event_data = {'sharelist': sharelist} response = get_response(url, json.dumps(event_data), request_type) event_data['file_path'] = file_path files_list = get_files_doc(event_data, data, None, event_dict, sub_event_count) make_sharing_request(event_data, data, files_list, event_dict, sub_event_count) make_log( data.get('profile_id'), "Event", "Shared Via Provider", "Event <b style='color: #89c148;'>%s</b> has been shared with Provider <b style='color: #89c148;'>%s</b> \ till <b style='color: #89c148;'>%s</b>" % (data.get('event_title'), data.get('doctor_name'), data.get('sharing_duration'))) return { "returncode": 2, "message_summary": json.loads(json.loads( response.text).get('sharelist'))[0].get('message_summary') }
def share_via_providers_account(data): # frappe.errprint([data.get('files'), not data.get('files')]) event_dict = {} sub_event_count = {} # return [event_dict, sub_event_count] patient_name = frappe.db.get_value("User", {"profile_id":data.get('profile_id')}, 'concat(first_name, " ", last_name)') or data.get('lphr_name') if not data.get('files'): event_data = { "sharelist": [ { "to_profile_id": data.get('doctor_id'), "received_from":"desktop", "from_profile_id": data.get('profile_id'), "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "access_type": "RDW", "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') } ] } if data.get('event_id'): for shared_meta in event_data.get('sharelist'): shared_meta["visit_tag_id"] = data.get('entityid') url="%s/sharephr/sharemultiplevisit"%get_base_url() else: url="%s/sharephr/sharemultipleevent"%get_base_url() request_type="POST" response=get_response(url, json.dumps(event_data), request_type) files_list = get_files_doc(event_data, data, None, event_dict, sub_event_count) make_sharing_request(event_data, data, files_list, event_dict, sub_event_count) make_log(data.get('profile_id'),"Event","Shared Via Provider","Event Shared Via Provider") args = {"patient":patient_name,"duration":data.get('sharing_duration')} email_msg = "%(patient)s has shared Event with You which is accesible upto %(duration)s. \n\n Thank you. \n Team HealthSnapp."%args notify_provider(data.get('doctor_id'),data.get('profile_id'),"Event Share",args,email_msg) return eval(json.loads(response.text).get('sharelist'))[0].get('message_summary') else: sharelist = [] file_path = [] print "\n\n\n\n share event files \n\n\n", data.get('files') for fl in data.get('files'): file_path.append(fl) file_details = fl.split('/') sharelist.append({ "to_profile_id": data.get('doctor_id'), "received_from":"desktop", "from_profile_id": data.get('profile_id'), "visit_tag_id": file_details[4], "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "tag_id": file_details[4] + '-' + cstr(file_details[2].split('-')[1]) + cstr(file_details[3].split('_')[1]) , "file_id": [file_details[5].replace('-watermark', '')], "file_access": ['RW'], "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') }) request_type="POST" url = "%s/sharephr/sharemultiplevisitfiles"%get_base_url() event_data = {'sharelist': sharelist} response=get_response(url, json.dumps(event_data), request_type) event_data['file_path'] = file_path files_list = get_files_doc(event_data, data, None, event_dict, sub_event_count) make_sharing_request(event_data, data, files_list, event_dict, sub_event_count) make_log(data.get('profile_id'),"Event","Shared Via Provider","Event Shared Via Provider") args = {"patient":patient_name,"duration":data.get('sharing_duration')} email_msg = "%(patient)s has shared Event with You which is accesible upto %(duration)s. \n\n Thank you.\n Team HealthSnapp."%args notify_provider(data.get('doctor_id'),data.get('profile_id'),"Event Share",args,email_msg) return json.loads(json.loads(response.text).get('sharelist'))[0].get('message_summary')
def share_via_providers_account(data): # frappe.errprint([data.get('files'), not data.get('files')]) if not data.get('files'): event_data = { "sharelist": [ { "to_profile_id": data.get('doctor_id'), "received_from":"desktop", "from_profile_id": data.get('profile_id'), "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "access_type": "RDW", "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') } ] } if data.get('event_id'): for shared_meta in event_data.get('sharelist'): shared_meta["visit_tag_id"] = data.get('entityid') url="%s/sharephr/sharemultiplevisit"%get_base_url() else: url="%s/sharephr/sharemultipleevent"%get_base_url() request_type="POST" response=get_response(url, json.dumps(event_data), request_type) files_list = get_files_doc(event_data, data) make_sharing_request(event_data, data, files_list) make_log(data.get('profile_id'),"Event","Shared Via Provider","Event Shared Via Provider") return eval(json.loads(response.text).get('sharelist'))[0].get('message_summary') else: sharelist = [] file_path = [] print "\n\n\n\n share event files \n\n\n", data.get('files') for fl in data.get('files'): file_path.append(fl) file_details = fl.split('/') sharelist.append({ "to_profile_id": data.get('doctor_id'), "received_from":"desktop", "from_profile_id": data.get('profile_id'), "visit_tag_id": file_details[4], "event_tag_id": data.get('entityid') if not data.get('event_id') else data.get('event_id'), "tag_id": file_details[4] + '-' + cstr(file_details[2].split('-')[1]) + cstr(file_details[3].split('_')[1]) , "file_id": [file_details[5].replace('-watermark', '')], "file_access": ['RW'], "str_start_date": datetime.datetime.strptime(nowdate(), '%Y-%m-%d').strftime('%d/%m/%Y'), "str_end_date": data.get('sharing_duration') }) request_type="POST" url = "%s/sharephr/sharemultiplevisitfiles"%get_base_url() event_data = {'sharelist': sharelist} response=get_response(url, json.dumps(event_data), request_type) event_data['file_path'] = file_path files_list = get_files_doc(event_data, data) make_sharing_request(event_data, data, files_list) make_log(data.get('profile_id'),"Event","Shared Via Provider","Event Shared Via Provider") return json.loads(json.loads(response.text).get('sharelist'))[0].get('message_summary')
def update_values_notify(dashboard_fields,name,profile_id): for d in dashboard_fields: frappe.db.sql("""update `tabNotification Configuration` set %s=1 where name='%s'"""%(d,name)) frappe.db.commit() sub = "Notifications Configuration Done" make_log(profile_id,"profile","Notifications",sub)