def exporter_donnees(): # TODO exporter les données en format PDF avec un long récapitulatif !!!! # TODO exporter les données en format JSON avec tout de répertorié if request.method == "POST": print(request.form) if "json" in request.form and request.form["json"]: patient = sm.PatientSess(session["pseudo_patient"]) entrees = patient.to_json() unique = "".join(sample("azertyuiopqsdfghjklmwxcvbn", 10)) + str(time.time()).split(".")[0] filename = unique + ".json" with open(os.path.join(dbm.DIRECTORY_JSON, filename), "w") as f: json.dump(entrees, f) flash(lazy_gettext("Le fichier JSON a bien été envoyé.")) return send_file(os.path.join(dbm.DIRECTORY_JSON, filename), mimetype="application/json", as_attachment=True) elif "txt" in request.form and request.form["txt"]: patient = sm.PatientSess(session["pseudo_patient"]) lignes = patient.to_txt() unique = "".join(sample("azertyuiopqsdfghjklmwxcvbn", 10)) + str(time.time()).split(".")[0] filename = unique + ".txt" if not os.path.exists(dbm.DIRECTORY_TXT): os.mkdir(dbm.DIRECTORY_TXT) with open(os.path.join(dbm.DIRECTORY_TXT, filename), "w") as f: for ligne in lignes: f.write(ligne + "\n") flash(lazy_gettext("Le fichier TXT a bien été envoyé.")) return send_file(os.path.join(dbm.DIRECTORY_TXT, filename), mimetype="text/plain", as_attachment=True) elif "csv" in request.form and request.form["csv"]: patient = sm.PatientSess(session["pseudo_patient"]) lignes = patient.to_csv() unique = "".join(sample("azertyuiopqsdfghjklmwxcvbn", 10)) + str(time.time()).split(".")[0] filename = unique + ".csv" with open(os.path.join(dbm.DIRECTORY_CSV, filename), "w") as f: for ligne in lignes: f.write("\t".join(ligne)+"\n") flash(lazy_gettext("Le fichier CSV a bien été envoyé.")) return send_file(os.path.join(dbm.DIRECTORY_CSV, filename), mimetype="text/csv", as_attachment=True) if "pdf" in request.form and request.form["pdf"]: patient = sm.PatientSess(session["pseudo_patient"]) entrees = patient.to_json() unique = "".join(sample("azertyuiopqsdfghjklmwxcvbn", 10)) + str(time.time()).split(".")[0] ret = generer_pdf_site(unique, entrees) if ret == 0: filename = unique + ".pdf" return send_file(os.path.join(dbm.DIRECTORY_TMP_LATEX, filename), "application/pdf", as_attachment=True) else: flash(lazy_gettext("Il est impossible de générer le fichier PDF")) # return render_template("patient/entrees/exportation_donnees.html") return render_template("patient/entrees/exportation_donnees.html", message="envoyé") else: return render_template("patient/entrees/exportation_donnees.html")
def creation_nouvelle_fiche_sommeil(): form = NewSleepEntry() if request.method == "POST": if form.validate_on_submit(): sommeil = dm.Sommeil() sommeil.from_new_webview(request.form) patient = sm.PatientSess(session["pseudo_patient"]) patient.enregistrer_entree_sommeil(sommeil) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) date_heure_evenement = DateHeure() date_heure_evenement.from_datetime( to_user_timezone(datetime.datetime.now())) flash(lazy_gettext("La fiche sommeil a bien été enregistrée.")) return redirect(url_for("main.afficher_menu_entrees_patient")) else: flash( lazy_gettext("Il y a au moins une erreur dans le formulaire")) return redirect(url_for("main.creation_nouvelle_fiche_sommeil")) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) date_heure_evenement = DateHeure() date_heure_evenement.from_datetime( to_user_timezone(datetime.datetime.now())) return render_template("patient/entrees/nouvelle_entree_sommeil.html", message="", maintenant=maintenant, date_heure_evenement=date_heure_evenement, form=form)
def contacter_son_praticien(numero_praticien): if request.method == "POST": patient = sm.PatientSess(session["pseudo_patient"]) praticien = patient.obtenir_praticien(numero_praticien) sujet = request.form["sujet-message"] corps = request.form["corps-message"] if envoyer_message_patient_vers_praticien(praticien, patient, sujet, corps): flash(lazy_gettext("Le message a correctement été envoyé.")) return redirect(url_for("main.contacter_son_praticien")) else: flash(lazy_gettext("Erreur lors de l'envoi, veuillez réessayer plus tard.")) return render_template("patient/praticiens/contacter_praticien.html", praticien=praticien) else: patient = sm.PatientSess(session["pseudo_patient"]) praticien = patient.obtenir_praticien(numero_praticien) return render_template("patient/praticiens/contacter_praticien.html", praticien=praticien)
def afficher_nouvelle_situation_patient(): form = NewSituationEntry() # print("request.form", request.form) # print("form.data", form.data) # print("form.errors", form.errors) if request.method == "POST": if form.validate_on_submit(): situation = dm.Situation() situation.from_view_to_data(request.form) patient = sm.PatientSess(session["pseudo_patient"]) patient.enregistrer_entree_situation(situation) form.message_succes = lazy_gettext( "La situation est correctement enregistrée") maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) flash(lazy_gettext("La situation est bien enregistrée")) return redirect(url_for("main.afficher_menu_entrees_patient")) else: flash( lazy_gettext("Il y a au moins une erreur dans le formulaire")) return redirect( url_for("main.afficher_nouvelle_situation_patient")) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) return render_template("patient/entrees/entry_situation_form.html", form=form, maintenant=maintenant)
def creation_nouvelle_fiche_poids(): form = NewWeightEntry() if request.method == "POST": if form.validate_on_submit(): masse = dm.Masse() masse.from_view_to_data(request.form) patient = sm.PatientSess(session["pseudo_patient"]) patient.enregistrer_poids(masse) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) flash(lazy_gettext("La fiche poids a bien été enregistrée.")) return redirect(url_for("main.afficher_menu_entrees_patient")) else: flash( lazy_gettext("Il y a au moins une erreur dans le formulaire " + "\n".join([ "\t\n".join(form.errors[kind]) for kind in form.errors ]))) return redirect(url_for("main.creation_nouvelle_fiche_poids")) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) return render_template("patient/entrees/nouvelle_entree_poids.html", form=form, maintenant=maintenant)
def creation_nouvelle_fiche_activite_physique(): form = NewPhysicalActivity() if request.method == "POST": if form.validate_on_submit(): ap = dm.ActivitePhysique() ap.from_view_to_data(request.form) patient = sm.PatientSess(session["pseudo_patient"]) patient.enregistrer_entree_activite_physique(ap) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) flash( lazy_gettext( "La fiche activité physique a bien été enregistrée.")) return redirect(url_for("main.afficher_menu_entrees_patient")) else: flash( lazy_gettext("Il y a au moins une erreur dans le formulaire")) return redirect( url_for("main.creation_nouvelle_fiche_activite_physique")) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) return render_template("patient/entrees/nouvelle_activite_physique.html", form=form, maintenant=maintenant)
def creation_nouvelle_fiche_alimentation(): form = NewFoodEntry() if request.method == "POST": if form.validate_on_submit(): alim = dm.Alimentation() alim.from_view_to_data(request.form) patient = sm.PatientSess(session["pseudo_patient"]) patient.enregistrer_entree_repas(alim) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) flash("La fiche repas a bien été enregistrée.") return redirect(url_for("main.afficher_menu_entrees_patient")) # return jsonify({"date_heure": request.form["date_heure"], "enrepas": request.form["enregistrement_repas"], # "nourriture": request.form["nourriture"], "repas": request.form["repas"]}) else: flash( lazy_gettext("Il y a au moins une erreur dans le formulaire")) return redirect( url_for("main.creation_nouvelle_fiche_alimentation")) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) return render_template("patient/entrees/nouvelle_entree_alimentation.html", form=form, maintenant=maintenant)
def afficher_profil_praticien(numero_praticien): patient = sm.PatientSess(session["pseudo_patient"]) praticiens = patient.acceder_praticiens() print(praticiens) if 0 < numero_praticien <= len(praticiens): return render_template("patient/praticiens/profil_praticien.html", praticien=praticiens[numero_praticien-1]) else: flash(lazy_gettext("Le profil de praticien donné est inconnu.")) return redirect(url_for("main.afficher_patient_page_inconnue"))
def mettre_a_jour_anamnese(): if request.method == "POST": id_anamnese = request.form["id_anamnese"] nouveau_texte = request.form["texte"] patient = sm.PatientSess(session["pseudo_patient"]) patient.mettre_a_jour_anamnese_patient(patient.patient_db.get_id(), id_anamnese, nouveau_texte) return jsonify({"success": "ok"}) return jsonify({"success": "ko"})
def creer_et_voir_anamnese(): if request.method == "POST": texte = request.form["texte-nouvelle-anamnese"] categorie = request.form["categorie"] patient = sm.PatientSess(session["pseudo_patient"]) patient.ajouter_anamnese_patient(patient.patient_db.get_id(), texte, categorie) anamneses = patient.lire_anamnese_patient(patient.patient_db.get_id()) return render_template("patient/profil/anamnese.html", patient=patient.patient_db, categories=dbm.Anamnese.categories, anamneses=anamneses) else: patient = sm.PatientSess(session["pseudo_patient"]) anamneses = patient.lire_anamnese_patient(patient.patient_db.get_id()) # print([(categorie, anamnese) for categorie, anamnese in anamneses.items()]) return render_template("patient/profil/anamnese.html", patient=patient.patient_db, categories=dbm.Anamnese.categories, anamneses=anamneses)
def supprimer_anamnese(): if request.method == "POST": id_anamnese = request.form["id_anamnese"] if not validation.validate_id(id_anamnese): return jsonify({"success": "ko"}) patient = sm.PatientSess(session["pseudo_patient"]) res = patient.supprimer_anamnese_patient(patient.patient_db.get_id(), id_anamnese) if res: return jsonify({"success": "ok"}) return jsonify({"success": "ko"})
def gerer_praticiens(): patient = sm.PatientSess(session["pseudo_patient"]) praticiens = patient.acceder_praticiens() if "POST" == request.method: if re.match(dbm.EMAIL_PATTERN, request.form["ajout_email_pratcien"]) is not None: res = patient.definir_praticien(request.form["ajout_email_pratcien"]) if res is None: flash(lazy_gettext("Le praticien demandé n'existe pas.")) return render_template("patient/praticiens/gestion_praticien.html", praticiens=praticiens, message_ajout_praticien="Le praticien demandé n'existe pas.") else: flash(lazy_gettext("La demande au praticien a correctement été envoyée.")) return redirect("main.afficher_menu_principal_patient") else: flash(lazy_gettext("L'adresse courriel donné est invalide.")) return render_template("patient/praticiens/gestion_praticien.html", praticiens=praticiens, message_ajout_praticien="Vous avez donné une adresse email invalide.") else: return render_template("patient/praticiens/gestion_praticien.html", praticiens=praticiens)
def creation_nouvelle_fiche_pm(): form = NewTakenPill() if request.method == "POST": if form.validate_on_submit(): pm = dm.PriseMedicament() pm.from_view_to_data(request.form) patient = sm.PatientSess(session["pseudo_patient"]) patient.enregistrer_entree_prise_medicament(pm) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) flash( lazy_gettext("La prise de médicament a bien été enregistrée.")) return redirect(url_for("main.afficher_menu_entrees_patient")) else: flash( lazy_gettext("Il y a au moins une erreur dans le formulaire")) return redirect(url_for("main.creation_nouvelle_fiche_pm")) maintenant = DateHeure() maintenant.from_datetime(to_user_timezone(datetime.datetime.now())) return render_template( "patient/entrees/nouvelle_entree_prise_medicament.html", form=form, maintenant=maintenant)
def affichage_demande_suivi(): if request.method == 'POST': print(request.form) # check if the post request has the file part if 'fichier_suivi' in request.files: print("on a un fichier") file = request.files['fichier_suivi'] # if user does not select file, browser also # submit an empty part without filename if file.filename == '': print("no selected file") flash('No selected file') return redirect(request.url) if file and allowed_file_json(file.filename): print("on a passé ça") filename = secure_filename(file.filename) texte = json.loads(str(file.read(), encoding="utf8")) # print(texte) corpus = dm.Corpus() corpus.from_json_app(texte) lignes = corpus.to_json() corpus.trier() # print("json : ", corpus.to_json()) # with open(os.path.join(DIRECTORY_JSON_FILES, "transitoire_"+session["pseudo"]+".json"), "w") as f: # json.dump(corpus.to_json(), f) session.modified = True # print('session', session) # file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) else: print("aucun fichier") # flash('No file part')a # return redirect(request.url) print("selection_patient" in request.form) if "selection_patient" in request.form: selected_patient_id = request.form["selection_patient"] praticien_sess = sm.PraticienSess(session["pseudo"]) ses_patients = praticien_sess.acceder_patients() selected_patient = ses_patients[int(selected_patient_id) - 1] print("son patient", selected_patient) patient_sess = sm.PatientSess(selected_patient.email) # texte = patient_sess.to_json() lignes = patient_sess.tout_obtenir() # for ligne in lignes: # print("lignes json", type(ligne)) # print("lignes json", ligne) if "affichage" in request.form: print("affichage") print(lignes) return render_template( "praticien/analyse/affichage_fichier_suivi_tcc.html", lignes=lignes) if "affichage_pdf" in request.form: print("affichage_pdf") contenu = [{'text': 'Situations', "style": "header"}] # TODO récupérer les données et les mettre en format PDF pour pdfmaker # for entree in ["Entree", "prise_medicament"]: table1 = [[ "Date", "Heure", "Intensité", "Situation", "Emotions et sensations" ]] for ligne in lignes["Entree"]: table1.append([ ligne["date"], ligne["heure"], ligne["intensite"], ligne["situation"], ligne["emotions_sensations"] ]) contenu.append({ "table": { "headerRows": 1, "widths": ['*', 'auto', 100, '*'], "body": table1 } }) contenu.append({"text": "Prise de médicament", "syle": "header"}) table2 = [["Date", "Heure", "Médicament", "Dosage"]] for ligne in lignes["prise_medicament"]: table2.append([ ligne["date"], ligne["heure"], ligne["medicament"], ligne["dosage"] ]) contenu.append({ "table": { "headerRows": 1, "widths": ['*', 'auto', 100, '*'], "body": table2 } }) data = {"content": contenu} return render_template( "praticien/analyse/affichage_pdf_fichier_suivi_tcc.html", data=data) if "analyse" in request.form: print("Dans analyse") # TODO redirect vocabu = dm.Vocabulaire("") session["voca"] = '{}' vocabu.from_json(session["voca"]) contenu = [{'text': 'Rapport', "style": "header"}] data_pdf = {"content": contenu} return render_template( "praticien/analyse/analyse_fichier_suivi.html", dico=vocabu.d, champs=champs, lignes=lignes, types=champs, data_pdf=data_pdf) else: print("on est dans le sinon") praticien_sess = sm.PraticienSess(session["pseudo"]) ses_patients = praticien_sess.acceder_patients() # print(ses_patients) return render_template("praticien/demande_fichier_suivi_tcc.html", patients=ses_patients)
def supprimer_profil_patient(): patient = sm.PatientSess(session["pseudo_patient"]) patient.supprimer_compte() return redirect(url_for("main.deconnecter_patient"))
def voir_profil(): patient = sm.PatientSess(session["pseudo_patient"]) return render_template("patient/profil/mon_identite.html", patient=patient.patient_db)
def afficher_entrees_patient(): patient = sm.PatientSess(session["pseudo_patient"]) entrees = patient.entries_to_json() print(entrees) return render_template("patient/entrees/visualisation_entrees.html", lignes=entrees)
def afficher_entree_patient(indice): patient = sm.PatientSess(session["pseudo_patient"]) entrees = patient.entries_to_json() return render_template("patient/entrees/visualisation_entree.html", element=entrees[indice])