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")
Exemple #2
0
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)
Exemple #4
0
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)
Exemple #5
0
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)
Exemple #6
0
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)
Exemple #7
0
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"})
Exemple #12
0
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)
Exemple #13
0
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)
Exemple #14
0
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)
Exemple #15
0
def supprimer_profil_patient():
    patient = sm.PatientSess(session["pseudo_patient"])
    patient.supprimer_compte()
    return redirect(url_for("main.deconnecter_patient"))
Exemple #16
0
def voir_profil():
    patient = sm.PatientSess(session["pseudo_patient"])
    return render_template("patient/profil/mon_identite.html", patient=patient.patient_db)
Exemple #17
0
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)
Exemple #18
0
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])