par NaC - ven. 5 avr. 2024 11:16
- ven. 5 avr. 2024 11:16
#215236
Bonjour à tous.
Je suis débutante et je n'ai pas d'expérience, c'est pour ça que je demande votre aide, mais j'ai envie d'apprendre et de m'améliorer.
J'aurais besoin d'aide concernant plusieurs fonctionnalités de mon application, la première serait la fonction enregistrement, et la fonction recherche.
Il s'agit d'une application pour la gestion de mes patients en Cabinet, le but est de pouvoir générer des fiches patients en fonction du type de patient afin de les suivre avec lors anamnèse, leur traitement ainsi que leur suivi.
J'ai déjà coder l'ensemble des onglets, il ne me manque plus que ces deux fonctionnalités afin de rendre le l'application opérationnel
Merci de m'avoir lu, et un grand merci à ceux qui pourront m'aider.
import tkinter as tk
from tkinter import ttk, messagebox
import sqlite3
# Connexion à la base de données (si elle n'existe pas, elle sera créée)
conn = sqlite3.connect('cabinet_chiro.db')
# Création d'un curseur pour exécuter des requêtes SQL
cur = conn.cursor()
# Création de la table pour les patients
cur.execute('''CREATE TABLE IF NOT EXISTS patients (
id INTEGER PRIMARY KEY,
nom TEXT,
prenom TEXT,
date_naissance TEXT,
email TEXT,
tel TEXT,
profession TEXT,
situation_familiale TEXT,
enfants INTEGER
)''')
# Table pour les informations spécifiques aux fiches adultes
cur.execute('''CREATE TABLE IF NOT EXISTS fiches_adulte (
id INTEGER PRIMARY KEY,
patient_id INTEGER,
autre TEXT,
FOREIGN KEY(patient_id) REFERENCES patients(id)
)''')
# Table pour les informations spécifiques aux fiches femmes enceintes
cur.execute('''CREATE TABLE IF NOT EXISTS fiches_femme_enceinte (
id INTEGER PRIMARY KEY,
patient_id INTEGER,
autre TEXT,
FOREIGN KEY(patient_id) REFERENCES patients(id)
)''')
# Table pour les informations spécifiques aux fiches pédiatriques
cur.execute('''CREATE TABLE IF NOT EXISTS fiches_pediatrique (
id INTEGER PRIMARY KEY,
patient_id INTEGER,
autre TEXT,
FOREIGN KEY(patient_id) REFERENCES patients(id)
)''')
# Commit des changements et fermeture de la connexion
conn.commit()
conn.close()
# Liste des patients (simulation d'une base de données)
patients = []
def retrouver_fiche_patient():
# Demander à l'utilisateur d'entrer l'identifiant, le nom ou le prénom du patient
terme_recherche = input("Entrez l'identifiant, le nom ou le prénom du patient à rechercher : ").strip().lower()
# Liste pour stocker les résultats de la recherche
resultats_recherche = []
# Parcourir la liste des patients pour rechercher le terme
for patient in patients:
if terme_recherche == patient["identifiant"].lower() or terme_recherche == patient["nom"].lower() or terme_recherche == patient["prenom"].lower():
resultats_recherche.append(patient)
# Afficher les résultats de la recherche
if resultats_recherche:
print("Résultats de la recherche :")
for resultat in resultats_recherche:
print("Nom:", resultat["nom"])
print("Prénom:", resultat["prenom"])
print("Identifiant:", resultat["identifiant"])
print("Âge:", resultat["age"])
print("Sexe:", resultat["sexe"])
print("Adresse:", resultat["adresse"])
print("Numéro de téléphone:", resultat["telephone"])
print("-----------------------------")
else:
print("Aucun patient trouvé pour le terme de recherche spécifié.")
def rechercher_patient(nom=None, prenom=None):
# Connexion à la base de données
# db_conn = fonction_pour_connexion_db()
# Construction de la requête SQL en fonction des critères spécifiés
query = "SELECT * FROM patients WHERE"
conditions = []
if nom:
conditions.append(f"nom = '{nom}'")
if prenom:
conditions.append(f"prenom = '{prenom}'")
# Si aucun critère n'est spécifié, retourner une erreur
if not conditions:
raise ValueError("Au moins un critère de recherche (nom ou prénom) doit être spécifié.")
query += " AND ".join(conditions)
# Exécution de la requête SQL
# resultats = db_conn.execute(query)
# Récupération des résultats de la requête
# patients = resultats.fetchall()
# Retourner les résultats
# return patients
# Pour l'exemple, retourner la requête SQL construite
return query
# Fonction pour enregistrer la fiche patient adulte
def enregistrer_fiche_patient_adulte():
# Ajouter le code pour enregistrer les données de la fiche patient adulte ici
print("Fiche patient adulte enregistrée")
# Fonction pour enregistrer les données de la fiche patient femme enceinte
def enregistrer_fiche_patient_femme_enceinte():
# Ajouter le code pour enregistrer les données de la fiche patient femme enceinte ici
print("Fiche patient femme enceinte enregistrée")
# Fonction pour enregistrer les données de la fiche patient pédiatrique
def enregistrer_fiche_patient_pediatrique():
# Ajouter le code pour enregistrer les données de la fiche patient pédiatrique ici
print("Fiche patient pédiatrique enregistrée")
# Fonction pour créer une nouvelle section de suivi de visite
def creer_nouveau_suivi():
# Ajouter le code pour créer une nouvelle section de suivi de visite ici
pass
# Création de l'interface pour la fiche patient adulte
def creer_fiche_patient_adulte():
fiche_patient_adulte = tk.Toplevel(window)
fiche_patient_adulte.title("Fiche patient adulte")
fiche_patient_adulte.configure(bg="#FCE4EC") # Couleur de fond rose clair
# Création de l'onglet principal
onglets = ttk.Notebook(fiche_patient_adulte)
onglets.pack(expand=True, fill="both")
# premiere page fiche rensignement
page_renseignements = ttk.Frame(onglets)
onglets.add(page_renseignements, text="Renseignements généraux")
labels = [
"Nom", "Prénom", "Date de naissance", "Email", "Téléphone",
"Profession", "Posture au travail", "Situation familiale", "Enfants", "Autre"
]
row = 0
posture = []
for label in labels:
tk.Label(page_renseignements, text=label + " :", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=0, padx=10, pady=5, sticky="e")
if label == "Posture au travail":
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Sédentaire", variable=posture[-1], onvalue="Sédentaire", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Debout piétine", variable=posture[-1], onvalue="Debout piétine", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=2, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Port de charge", variable=posture[-1], onvalue="Port de charge", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Déplacements", variable=posture[-1], onvalue="Déplacements", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=2, padx=10, pady=5, sticky="w")
row += 2
else:
entry = tk.Entry(page_renseignements, font=("Cadency", 14))
entry.grid(row=row, column=1, padx=10, pady=5)
row += 1
# Bouton Enregistrer
bouton_enregistrer = tk.Button(fiche_patient_adulte, text="Enregistrer", command=enregistrer_fiche_patient_adulte, bg="#FF8A80", fg="#000", font=("Cadency", 14))
bouton_enregistrer.pack(pady=10)
# Deuxième page : Première Visite
page_premiere_visite = ttk.Frame(onglets)
onglets.add(page_premiere_visite, text="Première Visite")
# Ajouter les champs pour la première visite...
label_premiere_visite = tk.Label(page_premiere_visite, text="Date de consultation :")
label_premiere_visite.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_premiere_visite = tk.Entry(page_premiere_visite)
entry_premiere_visite.grid(row=0, column=1, padx=10, pady=5)
# Anamnèse
tk.Label(page_premiere_visite, text="Anamnèse", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=5, sticky="w")
anamnese_text = tk.Text(page_premiere_visite, height=30, width=50)
anamnese_text.grid(row=1, column=0, padx=10, pady=5)
anamnese_text.insert(tk.END, "Localisation:\n\n\n\nOrigine: \nDepuis quand: \nFréquence: \nIntensité: \nAggravation: \nSoulagement: \nSigne neuro: \nPremier Épisode: \nTraitement antérieur:\n\n\n\nSymptôme majeur:")
# Antécédents médicaux
tk.Label(page_premiere_visite, text="Antécédents Généraux", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=2, padx=10, pady=5, sticky="w")
antecedents_text = tk.Text(page_premiere_visite, height=10, width=50)
antecedents_text.grid(row=1, column=2, padx=10, pady=5, sticky="nw")
antecedents_text.insert(tk.END, "Chutes:\nEntorses:\nFx:\nLuxations:\nAccidents:\nInterventions chirurgicales:\nHospitalisations:\nMaladie connues:\nMédicaments:")
# Habitudes de vie
tk.Label(page_premiere_visite, text="Habitudes de Vie", font=("Cadency", 14), bg="#FCE4EC").grid(row=1, column=2, padx=10, pady=5, sticky="w")
habit_vie_text = tk.Text(page_premiere_visite, height=6, width=50)
habit_vie_text.grid(row=1, column=2, padx=10, pady=5, sticky="s")
habit_vie_text.insert(tk.END, "Eau :\nSport:\nSommeil:\nStress:\nCompléments alimentaires:\nTabac:")
# Troisième page : Traitement
page_traitement = ttk.Frame(onglets)
onglets.add(page_traitement, text="Traitement")
# Ajouter les champs pour le traitement...
label_traitement = tk.Label(page_traitement, text="Date de consultation :")
label_traitement.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_traitement = tk.Entry(page_traitement)
entry_traitement.grid(row=0, column=1, padx=10, pady=5)
# Quatrième page : Suivi
page_suivi = ttk.Frame(onglets)
onglets.add(page_suivi, text="Suivi")
# Ajouter les champs pour le suivi...
label_suivi = tk.Label(page_suivi, text="Suivi:")
label_suivi.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_suivi = tk.Entry(page_suivi)
entry_suivi.grid(row=0, column=1, padx=10, pady=5)
# Bouton pour ajouter un nouveau suivi
bouton_nouveau_suivi = tk.Button(page_suivi, text="Nouveau Suivi", command=creer_nouveau_suivi)
bouton_nouveau_suivi.grid(row=1, columnspan=2, pady=10)
# Création de l'interface pour la fiche patient femme enceinte
def creer_fiche_patient_femme_enceinte():
fiche_patient_femme_enceinte = tk.Toplevel(window)
fiche_patient_femme_enceinte.title("Fiche patient femme enceinte")
fiche_patient_femme_enceinte.configure(bg="#FCE4EC") # Couleur de fond rose clair
# Création de l'onglet principal
onglets = ttk.Notebook(fiche_patient_femme_enceinte)
onglets.pack(expand=True, fill="both")
# Première page : Renseignements généraux
page_renseignements = ttk.Frame(onglets)
onglets.add(page_renseignements, text="Renseignements généraux")
labels = [
"Nom", "Prénom", "Date de naissance", "Email", "Téléphone",
"Profession", "Posture au travail", "Situation familiale", "Enfants", "Date probable d'accouchement", "Date prévue de l'arrêt de travail", "Autre"
]
row = 0
posture = []
for label in labels:
tk.Label(page_renseignements, text=label + " :", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=0, padx=10, pady=5, sticky="e")
if label == "Posture au travail":
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Sédentaire", variable=posture[-1], onvalue="Sédentaire", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Debout piétine", variable=posture[-1], onvalue="Debout piétine", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=2, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Port de charge", variable=posture[-1], onvalue="Port de charge", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Déplacements", variable=posture[-1], onvalue="Déplacements", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=2, padx=10, pady=5, sticky="w")
row += 2
else:
entry = tk.Entry(page_renseignements, font=("Cadency", 14))
entry.grid(row=row, column=1, padx=10, pady=5)
row += 1
# Bouton Enregistrer
bouton_enregistrer = tk.Button(fiche_patient_femme_enceinte, text="Enregistrer", command=enregistrer_fiche_patient_femme_enceinte, bg="#FF8A80", fg="#000", font=("Cadency", 14))
bouton_enregistrer.pack(pady=10)
# Deuxième page : Première Visite
page_premiere_visite = ttk.Frame(onglets)
onglets.add(page_premiere_visite, text="Première Visite")
# Champ pour écrire la date de la consultation
date_label = tk.Label(page_premiere_visite, text="Date de la consultation:", font=("Cadency", 13, "bold"), bg="#FCE4EC")
date_label.grid(row=0, column=2, padx=10, pady=5, sticky="w")
date_entry = tk.Entry(page_premiere_visite, width=20, font=("Cadency", 13))
date_entry.grid(row=0, column=3, padx=10, pady=5, sticky="w")
date_entry.focus()
# Anamnèse
tk.Label(page_premiere_visite, text="Anamnèse", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=5, sticky="w")
anamnese_text = tk.Text(page_premiere_visite, height=20, width=50)
anamnese_text.grid(row=1, column=0, padx=10, pady=5)
anamnese_text.insert(tk.END, "Localisation:\n\n\n\nOrigine: \nDepuis quand: \nFréquence: \nIntensité: \nAggravation: \nSoulagement: \nSigne neuro: \nPremier Épisode: \nTraitement antérieur:\n\n\n\nSymptôme majeur:")
# Antécédents médicaux
tk.Label(page_premiere_visite, text="Antécédents Généraux", font=("Cadency", 14), bg="#FCE4EC").grid(row=2, column=0, padx=10, pady=5, sticky="w")
antecedents_text = tk.Text(page_premiere_visite, height=5, width=50,)
antecedents_text.grid(row=3, column=0, padx=10, pady=5)
antecedents_text.insert(tk.END, "Chutes:\nEntorses:\nFx:\nLuxations:\nAccidents:\nInterventions chirurgicales:\nHospitalisations:\nMaladie connues:\nMédicaments:")
# Habitudes de vie
tk.Label(page_premiere_visite, text="Habitudes de Vie", font=("Cadency", 14), bg="#FCE4EC").grid(row=4, column=0, padx=10, pady=5, sticky="w")
habit_vie_text = tk.Text(page_premiere_visite, height=6, width=50)
habit_vie_text.grid(row=5, column=0, padx=10, pady=5)
habit_vie_text.insert(tk.END, "Eau :\nSport:\nSommeil:\nStress:\nCompléments alimentaires:\nTabac:")
# Grossesse
tk.Label(page_premiere_visite, text="Grossesse", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=1, padx=10, pady=7, sticky="w")
grossesse_text = tk.Text(page_premiere_visite, height=20, width=50)
grossesse_text.grid(row=1, column=1, padx=10, pady=5)
grossesse_text.insert(tk.END, "Semaines d’aménorrhée à ce jour : \nGrossesse multiple : \nPremière grossesse : \nSexe du bébé : F / M\nGrossesse naturelle PMA\nDifficultés/problématiques pendant la grossesse\nPrise de poids actuelle :\nNombres d’échographies jusqu’à présent :\nVous sentez-vous entourée\nSuivi par un gynécologue obstétricien\nSuivi par une sage femme libérale\nAccompagnement personnalisé\n\n\n\n\nAutres")
# Projet de naissance
tk.Label(page_premiere_visite, text="Projet de naissance", font=("Cadency", 14), bg="#FCE4EC").grid(row=3, column=1, padx=10, pady=5, sticky="w")
projet_naissance_text = tk.Text(page_premiere_visite, height=6, width=50)
projet_naissance_text.grid(row=4, column=1, padx=10, pady=5)
projet_naissance_text.insert(tk.END, "Lieu de l’accouchement prévu:\n\nDésir de péridurale :\nDéclenchement programmé :\nCésarienne programmée:\nAllaitement:")
# Troisième page : Traitement
page_traitement = ttk.Frame(onglets)
onglets.add(page_traitement, text="Traitement")
# Ajouter les champs pour le traitement...
label_traitement = tk.Label(page_traitement, text="Traitement:")
label_traitement.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_traitement = tk.Entry(page_traitement)
entry_traitement.grid(row=0, column=1, padx=10, pady=5)
# Quatrième page : Suivi
page_suivi = ttk.Frame(onglets)
onglets.add(page_suivi, text="Suivi")
# Ajouter les champs pour le suivi...
label_suivi = tk.Label(page_suivi, text="Suivi:")
label_suivi.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_suivi = tk.Entry(page_suivi)
entry_suivi.grid(row=0, column=1, padx=10, pady=5)
# Bouton pour ajouter un nouveau suivi
bouton_nouveau_suivi = tk.Button(page_suivi, text="Nouveau Suivi", command=creer_nouveau_suivi)
bouton_nouveau_suivi.grid(row=1, columnspan=2, pady=10)
# Création de l'interface pour la fiche patient pédiatrique
def creer_fiche_patient_pediatrique():
fiche_patient_pediatrique = tk.Toplevel(window)
fiche_patient_pediatrique.title("Fiche patient pédiatrique")
fiche_patient_pediatrique.configure(bg="#FCE4EC") # Couleur de fond rose clair
# Création de l'onglet principal
onglets = ttk.Notebook(fiche_patient_pediatrique)
onglets.pack(expand=True, fill="both")
# Première page : Renseignements généraux
page_renseignements = ttk.Frame(onglets)
onglets.add(page_renseignements, text="Renseignements généraux")
tk.Label(page_renseignements, text="Nom :", font=("Cadency", 14), bg="#FCE4EC").grid(row=1, column=1, padx=10, pady=5,sticky="ne")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=1, column=2, padx=10, pady=5,sticky="n")
tk.Label(page_renseignements, text="Prénom :", font=("Cadency", 14), bg="#FCE4EC").grid(row=2, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=2, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Date de naissance :", font=("Cadency", 14), bg="#FCE4EC").grid(row=3, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=3, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Position dans la Fatrie :", font=("Cadency", 14), bg="#FCE4EC").grid(row=4, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=4, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Email :", font=("Cadency", 14), bg="#FCE4EC").grid(row=5, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=5, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Téléphone :", font=("Cadency", 14), bg="#FCE4EC").grid(row=6, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=6, column=2, padx=10, pady=5)
# Ajouter les champs pour la fiche patient pédiatrique...
# Bouton Enregistrer
bouton_enregistrer = tk.Button(fiche_patient_pediatrique, text="Enregistrer", command=enregistrer_fiche_patient_pediatrique, bg="#FF8A80", fg="#000", font=("Cadency", 14))
bouton_enregistrer.pack(pady=10)
# Deuxième page : Première visite I
page_premiere_visite_I = ttk.Frame(onglets)
onglets.add(page_premiere_visite_I, text="Première visite I")
# Champ pour écrire la date de la consultation
date_label = tk.Label(page_premiere_visite_I, text="Date de la consultation:", font=("Cadency", 13, "bold"), bg="#FCE4EC")
date_label.grid(row=0, column=0, padx=2, pady=3, sticky="ne")
date_entry = tk.Entry(page_premiere_visite_I, width=20, font=("Cadency", 13))
date_entry.grid(row=0, column=1, padx=2, pady=0, sticky="nw")
date_entry.focus()
# L’accouchement / Maintenant
tk.Label(page_premiere_visite_I, text="L’accouchement / Maintenant", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=2, sticky="nw")
accouchement_text = tk.Text(page_premiere_visite_I, height=30, width=50)
accouchement_text.grid(row=0, column=0, padx=10, pady=30)
accouchement_text.insert(tk.END, "Nombre de semaines de gestation :\nÀ la naissance:\n - Poids :\n - Taille :\n - Périmètre crânien :\nPosition du bébé :\nDébut spontané\nDéclenchement:\n - Type:\n - Raison: \nAccouchement programmé\nCésarienne programmée\nLieu de l’accouchement :\nPosition de travail :\nDurant le travail :\n - Injection d’ocytocine \n - Péridurale\n - Episiotomie\n - Utilisation d’instruments\nComplications:\n - Tour de cordon\n - Autre\nPosition de délivrance :\nDurée de l’accouchement :\nVoie vaginale\nCésarienne\nImpression sur votre accouchement: \n\nAge actuel :\nPoids actuel :\nTaille actuelle :\nPérimètre crânien actuel :")
# La grossesse
tk.Label(page_premiere_visite_I, text="La grossesse", font=("Cadency", 14), bg="#FCE4EC").grid(row=1, column=0, padx=10, pady=0, sticky="nw")
grossesse_text = tk.Text(page_premiere_visite_I, height=10, width=50)
grossesse_text.grid(row=1, column=0, padx=10, pady=30)
grossesse_text.insert(tk.END, "Première grossesse :\n - Grossesse naturelle\n - PMA :\nConsommation pendant la grossesse: \n - tabac\n - drogue\n - alcool\nMédicaments / vaccinations :\nProblèmes medical pendant la grossesse :\n\nÉvénements durant la grossesse\n - traumatisme\n - stress\n - deuil\n - accident de voiture\n")
# Après l’accouchement
tk.Label(page_premiere_visite_I, text="Après l’accouchement", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=1, padx=10, pady=35, sticky="nw")
apres_accouchement_text = tk.Text(page_premiere_visite_I, height=10, width=50)
apres_accouchement_text.grid(row=0, column=1, padx=5, pady=65, sticky="nw")
apres_accouchement_text.insert(tk.END, "Vous êtes-vous sentie soutenue\nArriviez-vous à dormir quand votre bébé dormait\n\n\nProblèmes de santé : \n - Hospitalisations\n - Combien de temps\nAutre: ")
# Deuxième page : Première visite II
page_premiere_visite_II = ttk.Frame(onglets)
onglets.add(page_premiere_visite_II, text="Première visite II")
# Champ pour écrire la date de la consultation
date_label = tk.Label(page_premiere_visite_II, text="Date de la consultation:", font=("Cadency", 13, "bold"), bg="#FCE4EC")
date_label.grid(row=0, column=0, padx=2, pady=3, sticky="ne")
date_entry = tk.Entry(page_premiere_visite_II, width=20, font=("Cadency", 12))
date_entry.grid(row=0, column=1, padx=2, pady=0, sticky="nw")
date_entry.focus()
# Votre bébé à la naissance
tk.Label(page_premiere_visite_II, text="Votre bébé à la naissance", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=5, sticky="nw")
bebe_naissance_text = tk.Text(page_premiere_visite_II, height=28, width=50)
bebe_naissance_text.grid(row=0, column=0, padx=10, pady=35, sticky="nw")
bebe_naissance_text.insert(tk.END, "Interventions naissance\n - couveuse\n - aide respiratoire\n - médicaments:\nJaunisse\nPosition préférentielle de la tête :\n - droite\n - gauche)\nAllaitement :\n - À la demande oui/non/\n - Combien de tétées actuellement :\n - Prise du sein instantanée\n - Difficultés d’allaitement\nFreins restrictifs buccaux diagnostiqués : \n - Lequel: \nUtilisation de tire-lait\nPréparation commerciale pour nourrisson :\n - Marque :\n - Nombre de biberons/jour :\nTétines\nProblèmes digestifs\n - Coliques\n - Reflux \n - Bébé inconfortable\nNombre de couches par jour (urine et selles):\nPleurs difficiles à calmer\n")
# Votre bébé par la suite
tk.Label(page_premiere_visite_II, text="Votre bébé par la suite", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=1, padx=10, pady=35, sticky="nw")
bebe_suite_text = tk.Text(page_premiere_visite_II, height=41, width=50)
bebe_suite_text.grid(row=0, column=1, padx=10, pady=65, sticky="e")
bebe_suite_text.insert(tk.END, "Age du sevrage allaitement maternel :\nDiversification\nProblèmes digestifs:\n - Coliques\n - Reflux\n - Nombre de Selles par jour\nRepas:\n - Fausses routes\n - Difficultés à déglutir\n - Prend du plaisir à manger\nPleurs difficiles à calmer\nPrise de médicaments\nVaccination\nProbiotiques\nMaladies,H/Chir\nChutes\nPertes de connaissance\nFractures\nEntorses\nLuxations\nAutres traumatismes\nMaladies congénitales:\n - Spécialistes vus:\nBébé Position : \n - Confortable Dos\n - Ventre\n - Pleure siège auto\n - Position asymétrique\n - tendu en arrière\nSommeil :\n - Difficultés de sommeil\n - Position de sommeil\nUtilisation (?h/j)\n - Transat\n - Balancelle\n - Trotteur\nPortage à bras ou écharpe\nAge de la position assise par soi-même\nAge du quatre pattes\nAge de la marche\n")
# Ajouter les champs pour la première visite...
# Troisième page : Traitement
page_traitement = ttk.Frame(onglets)
onglets.add(page_traitement, text="Traitement")
# Ajouter les champs pour le traitement...
label_traitement = tk.Label(page_traitement, text="Traitement:")
label_traitement.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_traitement = tk.Entry(page_traitement)
entry_traitement.grid(row=0, column=1, padx=10, pady=5)
# Quatrième page : Suivi
page_suivi = ttk.Frame(onglets)
onglets.add(page_suivi, text="Suivi")
# Ajouter les champs pour le suivi...
label_suivi = tk.Label(page_suivi, text="Suivi:")
label_suivi.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_suivi = tk.Entry(page_suivi)
entry_suivi.grid(row=0, column=1, padx=10, pady=5)
# Bouton pour ajouter un nouveau suivi
bouton_nouveau_suivi = tk.Button(page_suivi, text="Nouveau Suivi", command=creer_nouveau_suivi)
bouton_nouveau_suivi.grid(row=1, columnspan=2, pady=10)
# Fonction pour rechercher un patient
def rechercher():
nom = ent_nom_recherche.get() # Utiliser ent_nom_recherche au lieu de ent_nom
prenom = ent_prenom_recherche.get() # Utiliser ent_prenom_recherche au lieu de ent_prenom
resultat = rechercher_patient(nom, prenom)
messagebox.showinfo("Résultat de la recherche", resultat)
def rechercher_patient(nom, prenom):
# Connexion à la base de données
connexion = sqlite3.connect("cabinet_chiro.db")
curseur = connexion.cursor()
# Exécuter la requête SQL pour rechercher le patient
curseur.execute("SELECT * FROM patients WHERE nom = ? AND prenom = ?", (nom, prenom))
resultat = curseur.fetchall()
# Fermer la connexion à la base de données
connexion.close()
return resultat
# Création de la fenêtre principale
window = tk.Tk()
window.title("Mon Cabinet Chiro")
window.geometry("500x500")
window.configure(bg="#FFFAF0")
# Création des onglets
onglets = ttk.Notebook(window)
# Onglet pour les fonctionnalités principales
onglet_principal = ttk.Frame(onglets)
onglets.add(onglet_principal, text='Nouveau Patient')
# Boutons pour créer une nouvelle fiche patient
btn_adulte = tk.Button(onglet_principal, text="Nouvelle fiche adulte", command=creer_fiche_patient_adulte, bg="#FCE4EC", fg="#000", font=("Cadency", 14))
btn_adulte.pack(pady=20)
btn_femme_enceinte = tk.Button(onglet_principal, text="Nouvelle fiche femme enceinte", command=creer_fiche_patient_femme_enceinte, bg="#FCE4EC", fg="#000", font=("Cadency", 14))
btn_femme_enceinte.pack(pady=20)
btn_pediatrique = tk.Button(onglet_principal, text="Nouvelle fiche pédiatrique", command=creer_fiche_patient_pediatrique, bg="#996666", fg="#000", font=("Cadency", 14))
btn_pediatrique.pack(pady=20)
# Ajout de l'onglet pour la recherche de patients
onglet_recherche = ttk.Frame(onglets)
onglets.add(onglet_recherche, text='Recherche de Patient')
# Cadre pour la recherche de patients
cadre_recherche = ttk.LabelFrame(onglet_recherche, text="Recherche de Patient")
cadre_recherche.pack(padx=10, pady=10)
# Étiquette et champ de saisie pour le nom dans l'onglet recherche
lbl_nom_recherche = ttk.Label(cadre_recherche, text="Nom :")
lbl_nom_recherche.grid(row=0, column=0, padx=5, pady=5, sticky='e')
ent_nom_recherche = ttk.Entry(cadre_recherche)
ent_nom_recherche.grid(row=0, column=1, padx=5, pady=5)
# Étiquette et champ de saisie pour le prénom dans l'onglet recherche
lbl_prenom_recherche = ttk.Label(cadre_recherche, text="Prénom :")
lbl_prenom_recherche.grid(row=1, column=0, padx=5, pady=5, sticky='e')
ent_prenom_recherche = ttk.Entry(cadre_recherche)
ent_prenom_recherche.grid(row=1, column=1, padx=5, pady=5)
# Bouton de recherche dans l'onglet recherche
btn_recherche_recherche = ttk.Button(cadre_recherche, text="Rechercher", command=rechercher)
btn_recherche_recherche.grid(row=2, column=0, columnspan=2, padx=5, pady=5)
# Ajout des onglets à la fenêtre principale
onglets.pack(expand=True, fill='both')
window.mainloop()
Je suis débutante et je n'ai pas d'expérience, c'est pour ça que je demande votre aide, mais j'ai envie d'apprendre et de m'améliorer.
J'aurais besoin d'aide concernant plusieurs fonctionnalités de mon application, la première serait la fonction enregistrement, et la fonction recherche.
Il s'agit d'une application pour la gestion de mes patients en Cabinet, le but est de pouvoir générer des fiches patients en fonction du type de patient afin de les suivre avec lors anamnèse, leur traitement ainsi que leur suivi.
J'ai déjà coder l'ensemble des onglets, il ne me manque plus que ces deux fonctionnalités afin de rendre le l'application opérationnel
Merci de m'avoir lu, et un grand merci à ceux qui pourront m'aider.
import tkinter as tk
from tkinter import ttk, messagebox
import sqlite3
# Connexion à la base de données (si elle n'existe pas, elle sera créée)
conn = sqlite3.connect('cabinet_chiro.db')
# Création d'un curseur pour exécuter des requêtes SQL
cur = conn.cursor()
# Création de la table pour les patients
cur.execute('''CREATE TABLE IF NOT EXISTS patients (
id INTEGER PRIMARY KEY,
nom TEXT,
prenom TEXT,
date_naissance TEXT,
email TEXT,
tel TEXT,
profession TEXT,
situation_familiale TEXT,
enfants INTEGER
)''')
# Table pour les informations spécifiques aux fiches adultes
cur.execute('''CREATE TABLE IF NOT EXISTS fiches_adulte (
id INTEGER PRIMARY KEY,
patient_id INTEGER,
autre TEXT,
FOREIGN KEY(patient_id) REFERENCES patients(id)
)''')
# Table pour les informations spécifiques aux fiches femmes enceintes
cur.execute('''CREATE TABLE IF NOT EXISTS fiches_femme_enceinte (
id INTEGER PRIMARY KEY,
patient_id INTEGER,
autre TEXT,
FOREIGN KEY(patient_id) REFERENCES patients(id)
)''')
# Table pour les informations spécifiques aux fiches pédiatriques
cur.execute('''CREATE TABLE IF NOT EXISTS fiches_pediatrique (
id INTEGER PRIMARY KEY,
patient_id INTEGER,
autre TEXT,
FOREIGN KEY(patient_id) REFERENCES patients(id)
)''')
# Commit des changements et fermeture de la connexion
conn.commit()
conn.close()
# Liste des patients (simulation d'une base de données)
patients = []
def retrouver_fiche_patient():
# Demander à l'utilisateur d'entrer l'identifiant, le nom ou le prénom du patient
terme_recherche = input("Entrez l'identifiant, le nom ou le prénom du patient à rechercher : ").strip().lower()
# Liste pour stocker les résultats de la recherche
resultats_recherche = []
# Parcourir la liste des patients pour rechercher le terme
for patient in patients:
if terme_recherche == patient["identifiant"].lower() or terme_recherche == patient["nom"].lower() or terme_recherche == patient["prenom"].lower():
resultats_recherche.append(patient)
# Afficher les résultats de la recherche
if resultats_recherche:
print("Résultats de la recherche :")
for resultat in resultats_recherche:
print("Nom:", resultat["nom"])
print("Prénom:", resultat["prenom"])
print("Identifiant:", resultat["identifiant"])
print("Âge:", resultat["age"])
print("Sexe:", resultat["sexe"])
print("Adresse:", resultat["adresse"])
print("Numéro de téléphone:", resultat["telephone"])
print("-----------------------------")
else:
print("Aucun patient trouvé pour le terme de recherche spécifié.")
def rechercher_patient(nom=None, prenom=None):
# Connexion à la base de données
# db_conn = fonction_pour_connexion_db()
# Construction de la requête SQL en fonction des critères spécifiés
query = "SELECT * FROM patients WHERE"
conditions = []
if nom:
conditions.append(f"nom = '{nom}'")
if prenom:
conditions.append(f"prenom = '{prenom}'")
# Si aucun critère n'est spécifié, retourner une erreur
if not conditions:
raise ValueError("Au moins un critère de recherche (nom ou prénom) doit être spécifié.")
query += " AND ".join(conditions)
# Exécution de la requête SQL
# resultats = db_conn.execute(query)
# Récupération des résultats de la requête
# patients = resultats.fetchall()
# Retourner les résultats
# return patients
# Pour l'exemple, retourner la requête SQL construite
return query
# Fonction pour enregistrer la fiche patient adulte
def enregistrer_fiche_patient_adulte():
# Ajouter le code pour enregistrer les données de la fiche patient adulte ici
print("Fiche patient adulte enregistrée")
# Fonction pour enregistrer les données de la fiche patient femme enceinte
def enregistrer_fiche_patient_femme_enceinte():
# Ajouter le code pour enregistrer les données de la fiche patient femme enceinte ici
print("Fiche patient femme enceinte enregistrée")
# Fonction pour enregistrer les données de la fiche patient pédiatrique
def enregistrer_fiche_patient_pediatrique():
# Ajouter le code pour enregistrer les données de la fiche patient pédiatrique ici
print("Fiche patient pédiatrique enregistrée")
# Fonction pour créer une nouvelle section de suivi de visite
def creer_nouveau_suivi():
# Ajouter le code pour créer une nouvelle section de suivi de visite ici
pass
# Création de l'interface pour la fiche patient adulte
def creer_fiche_patient_adulte():
fiche_patient_adulte = tk.Toplevel(window)
fiche_patient_adulte.title("Fiche patient adulte")
fiche_patient_adulte.configure(bg="#FCE4EC") # Couleur de fond rose clair
# Création de l'onglet principal
onglets = ttk.Notebook(fiche_patient_adulte)
onglets.pack(expand=True, fill="both")
# premiere page fiche rensignement
page_renseignements = ttk.Frame(onglets)
onglets.add(page_renseignements, text="Renseignements généraux")
labels = [
"Nom", "Prénom", "Date de naissance", "Email", "Téléphone",
"Profession", "Posture au travail", "Situation familiale", "Enfants", "Autre"
]
row = 0
posture = []
for label in labels:
tk.Label(page_renseignements, text=label + " :", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=0, padx=10, pady=5, sticky="e")
if label == "Posture au travail":
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Sédentaire", variable=posture[-1], onvalue="Sédentaire", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Debout piétine", variable=posture[-1], onvalue="Debout piétine", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=2, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Port de charge", variable=posture[-1], onvalue="Port de charge", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Déplacements", variable=posture[-1], onvalue="Déplacements", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=2, padx=10, pady=5, sticky="w")
row += 2
else:
entry = tk.Entry(page_renseignements, font=("Cadency", 14))
entry.grid(row=row, column=1, padx=10, pady=5)
row += 1
# Bouton Enregistrer
bouton_enregistrer = tk.Button(fiche_patient_adulte, text="Enregistrer", command=enregistrer_fiche_patient_adulte, bg="#FF8A80", fg="#000", font=("Cadency", 14))
bouton_enregistrer.pack(pady=10)
# Deuxième page : Première Visite
page_premiere_visite = ttk.Frame(onglets)
onglets.add(page_premiere_visite, text="Première Visite")
# Ajouter les champs pour la première visite...
label_premiere_visite = tk.Label(page_premiere_visite, text="Date de consultation :")
label_premiere_visite.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_premiere_visite = tk.Entry(page_premiere_visite)
entry_premiere_visite.grid(row=0, column=1, padx=10, pady=5)
# Anamnèse
tk.Label(page_premiere_visite, text="Anamnèse", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=5, sticky="w")
anamnese_text = tk.Text(page_premiere_visite, height=30, width=50)
anamnese_text.grid(row=1, column=0, padx=10, pady=5)
anamnese_text.insert(tk.END, "Localisation:\n\n\n\nOrigine: \nDepuis quand: \nFréquence: \nIntensité: \nAggravation: \nSoulagement: \nSigne neuro: \nPremier Épisode: \nTraitement antérieur:\n\n\n\nSymptôme majeur:")
# Antécédents médicaux
tk.Label(page_premiere_visite, text="Antécédents Généraux", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=2, padx=10, pady=5, sticky="w")
antecedents_text = tk.Text(page_premiere_visite, height=10, width=50)
antecedents_text.grid(row=1, column=2, padx=10, pady=5, sticky="nw")
antecedents_text.insert(tk.END, "Chutes:\nEntorses:\nFx:\nLuxations:\nAccidents:\nInterventions chirurgicales:\nHospitalisations:\nMaladie connues:\nMédicaments:")
# Habitudes de vie
tk.Label(page_premiere_visite, text="Habitudes de Vie", font=("Cadency", 14), bg="#FCE4EC").grid(row=1, column=2, padx=10, pady=5, sticky="w")
habit_vie_text = tk.Text(page_premiere_visite, height=6, width=50)
habit_vie_text.grid(row=1, column=2, padx=10, pady=5, sticky="s")
habit_vie_text.insert(tk.END, "Eau :\nSport:\nSommeil:\nStress:\nCompléments alimentaires:\nTabac:")
# Troisième page : Traitement
page_traitement = ttk.Frame(onglets)
onglets.add(page_traitement, text="Traitement")
# Ajouter les champs pour le traitement...
label_traitement = tk.Label(page_traitement, text="Date de consultation :")
label_traitement.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_traitement = tk.Entry(page_traitement)
entry_traitement.grid(row=0, column=1, padx=10, pady=5)
# Quatrième page : Suivi
page_suivi = ttk.Frame(onglets)
onglets.add(page_suivi, text="Suivi")
# Ajouter les champs pour le suivi...
label_suivi = tk.Label(page_suivi, text="Suivi:")
label_suivi.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_suivi = tk.Entry(page_suivi)
entry_suivi.grid(row=0, column=1, padx=10, pady=5)
# Bouton pour ajouter un nouveau suivi
bouton_nouveau_suivi = tk.Button(page_suivi, text="Nouveau Suivi", command=creer_nouveau_suivi)
bouton_nouveau_suivi.grid(row=1, columnspan=2, pady=10)
# Création de l'interface pour la fiche patient femme enceinte
def creer_fiche_patient_femme_enceinte():
fiche_patient_femme_enceinte = tk.Toplevel(window)
fiche_patient_femme_enceinte.title("Fiche patient femme enceinte")
fiche_patient_femme_enceinte.configure(bg="#FCE4EC") # Couleur de fond rose clair
# Création de l'onglet principal
onglets = ttk.Notebook(fiche_patient_femme_enceinte)
onglets.pack(expand=True, fill="both")
# Première page : Renseignements généraux
page_renseignements = ttk.Frame(onglets)
onglets.add(page_renseignements, text="Renseignements généraux")
labels = [
"Nom", "Prénom", "Date de naissance", "Email", "Téléphone",
"Profession", "Posture au travail", "Situation familiale", "Enfants", "Date probable d'accouchement", "Date prévue de l'arrêt de travail", "Autre"
]
row = 0
posture = []
for label in labels:
tk.Label(page_renseignements, text=label + " :", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=0, padx=10, pady=5, sticky="e")
if label == "Posture au travail":
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Sédentaire", variable=posture[-1], onvalue="Sédentaire", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Debout piétine", variable=posture[-1], onvalue="Debout piétine", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row, column=2, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Port de charge", variable=posture[-1], onvalue="Port de charge", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=1, padx=10, pady=5, sticky="w")
posture.append(tk.StringVar())
tk.Checkbutton(page_renseignements, text="Déplacements", variable=posture[-1], onvalue="Déplacements", offvalue="", font=("Cadency", 14), bg="#FCE4EC").grid(row=row+1, column=2, padx=10, pady=5, sticky="w")
row += 2
else:
entry = tk.Entry(page_renseignements, font=("Cadency", 14))
entry.grid(row=row, column=1, padx=10, pady=5)
row += 1
# Bouton Enregistrer
bouton_enregistrer = tk.Button(fiche_patient_femme_enceinte, text="Enregistrer", command=enregistrer_fiche_patient_femme_enceinte, bg="#FF8A80", fg="#000", font=("Cadency", 14))
bouton_enregistrer.pack(pady=10)
# Deuxième page : Première Visite
page_premiere_visite = ttk.Frame(onglets)
onglets.add(page_premiere_visite, text="Première Visite")
# Champ pour écrire la date de la consultation
date_label = tk.Label(page_premiere_visite, text="Date de la consultation:", font=("Cadency", 13, "bold"), bg="#FCE4EC")
date_label.grid(row=0, column=2, padx=10, pady=5, sticky="w")
date_entry = tk.Entry(page_premiere_visite, width=20, font=("Cadency", 13))
date_entry.grid(row=0, column=3, padx=10, pady=5, sticky="w")
date_entry.focus()
# Anamnèse
tk.Label(page_premiere_visite, text="Anamnèse", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=5, sticky="w")
anamnese_text = tk.Text(page_premiere_visite, height=20, width=50)
anamnese_text.grid(row=1, column=0, padx=10, pady=5)
anamnese_text.insert(tk.END, "Localisation:\n\n\n\nOrigine: \nDepuis quand: \nFréquence: \nIntensité: \nAggravation: \nSoulagement: \nSigne neuro: \nPremier Épisode: \nTraitement antérieur:\n\n\n\nSymptôme majeur:")
# Antécédents médicaux
tk.Label(page_premiere_visite, text="Antécédents Généraux", font=("Cadency", 14), bg="#FCE4EC").grid(row=2, column=0, padx=10, pady=5, sticky="w")
antecedents_text = tk.Text(page_premiere_visite, height=5, width=50,)
antecedents_text.grid(row=3, column=0, padx=10, pady=5)
antecedents_text.insert(tk.END, "Chutes:\nEntorses:\nFx:\nLuxations:\nAccidents:\nInterventions chirurgicales:\nHospitalisations:\nMaladie connues:\nMédicaments:")
# Habitudes de vie
tk.Label(page_premiere_visite, text="Habitudes de Vie", font=("Cadency", 14), bg="#FCE4EC").grid(row=4, column=0, padx=10, pady=5, sticky="w")
habit_vie_text = tk.Text(page_premiere_visite, height=6, width=50)
habit_vie_text.grid(row=5, column=0, padx=10, pady=5)
habit_vie_text.insert(tk.END, "Eau :\nSport:\nSommeil:\nStress:\nCompléments alimentaires:\nTabac:")
# Grossesse
tk.Label(page_premiere_visite, text="Grossesse", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=1, padx=10, pady=7, sticky="w")
grossesse_text = tk.Text(page_premiere_visite, height=20, width=50)
grossesse_text.grid(row=1, column=1, padx=10, pady=5)
grossesse_text.insert(tk.END, "Semaines d’aménorrhée à ce jour : \nGrossesse multiple : \nPremière grossesse : \nSexe du bébé : F / M\nGrossesse naturelle PMA\nDifficultés/problématiques pendant la grossesse\nPrise de poids actuelle :\nNombres d’échographies jusqu’à présent :\nVous sentez-vous entourée\nSuivi par un gynécologue obstétricien\nSuivi par une sage femme libérale\nAccompagnement personnalisé\n\n\n\n\nAutres")
# Projet de naissance
tk.Label(page_premiere_visite, text="Projet de naissance", font=("Cadency", 14), bg="#FCE4EC").grid(row=3, column=1, padx=10, pady=5, sticky="w")
projet_naissance_text = tk.Text(page_premiere_visite, height=6, width=50)
projet_naissance_text.grid(row=4, column=1, padx=10, pady=5)
projet_naissance_text.insert(tk.END, "Lieu de l’accouchement prévu:\n\nDésir de péridurale :\nDéclenchement programmé :\nCésarienne programmée:\nAllaitement:")
# Troisième page : Traitement
page_traitement = ttk.Frame(onglets)
onglets.add(page_traitement, text="Traitement")
# Ajouter les champs pour le traitement...
label_traitement = tk.Label(page_traitement, text="Traitement:")
label_traitement.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_traitement = tk.Entry(page_traitement)
entry_traitement.grid(row=0, column=1, padx=10, pady=5)
# Quatrième page : Suivi
page_suivi = ttk.Frame(onglets)
onglets.add(page_suivi, text="Suivi")
# Ajouter les champs pour le suivi...
label_suivi = tk.Label(page_suivi, text="Suivi:")
label_suivi.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_suivi = tk.Entry(page_suivi)
entry_suivi.grid(row=0, column=1, padx=10, pady=5)
# Bouton pour ajouter un nouveau suivi
bouton_nouveau_suivi = tk.Button(page_suivi, text="Nouveau Suivi", command=creer_nouveau_suivi)
bouton_nouveau_suivi.grid(row=1, columnspan=2, pady=10)
# Création de l'interface pour la fiche patient pédiatrique
def creer_fiche_patient_pediatrique():
fiche_patient_pediatrique = tk.Toplevel(window)
fiche_patient_pediatrique.title("Fiche patient pédiatrique")
fiche_patient_pediatrique.configure(bg="#FCE4EC") # Couleur de fond rose clair
# Création de l'onglet principal
onglets = ttk.Notebook(fiche_patient_pediatrique)
onglets.pack(expand=True, fill="both")
# Première page : Renseignements généraux
page_renseignements = ttk.Frame(onglets)
onglets.add(page_renseignements, text="Renseignements généraux")
tk.Label(page_renseignements, text="Nom :", font=("Cadency", 14), bg="#FCE4EC").grid(row=1, column=1, padx=10, pady=5,sticky="ne")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=1, column=2, padx=10, pady=5,sticky="n")
tk.Label(page_renseignements, text="Prénom :", font=("Cadency", 14), bg="#FCE4EC").grid(row=2, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=2, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Date de naissance :", font=("Cadency", 14), bg="#FCE4EC").grid(row=3, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=3, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Position dans la Fatrie :", font=("Cadency", 14), bg="#FCE4EC").grid(row=4, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=4, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Email :", font=("Cadency", 14), bg="#FCE4EC").grid(row=5, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=5, column=2, padx=10, pady=5)
tk.Label(page_renseignements, text="Téléphone :", font=("Cadency", 14), bg="#FCE4EC").grid(row=6, column=1, padx=10, pady=5, sticky="e")
tk.Entry(page_renseignements, font=("Cadency", 14)).grid(row=6, column=2, padx=10, pady=5)
# Ajouter les champs pour la fiche patient pédiatrique...
# Bouton Enregistrer
bouton_enregistrer = tk.Button(fiche_patient_pediatrique, text="Enregistrer", command=enregistrer_fiche_patient_pediatrique, bg="#FF8A80", fg="#000", font=("Cadency", 14))
bouton_enregistrer.pack(pady=10)
# Deuxième page : Première visite I
page_premiere_visite_I = ttk.Frame(onglets)
onglets.add(page_premiere_visite_I, text="Première visite I")
# Champ pour écrire la date de la consultation
date_label = tk.Label(page_premiere_visite_I, text="Date de la consultation:", font=("Cadency", 13, "bold"), bg="#FCE4EC")
date_label.grid(row=0, column=0, padx=2, pady=3, sticky="ne")
date_entry = tk.Entry(page_premiere_visite_I, width=20, font=("Cadency", 13))
date_entry.grid(row=0, column=1, padx=2, pady=0, sticky="nw")
date_entry.focus()
# L’accouchement / Maintenant
tk.Label(page_premiere_visite_I, text="L’accouchement / Maintenant", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=2, sticky="nw")
accouchement_text = tk.Text(page_premiere_visite_I, height=30, width=50)
accouchement_text.grid(row=0, column=0, padx=10, pady=30)
accouchement_text.insert(tk.END, "Nombre de semaines de gestation :\nÀ la naissance:\n - Poids :\n - Taille :\n - Périmètre crânien :\nPosition du bébé :\nDébut spontané\nDéclenchement:\n - Type:\n - Raison: \nAccouchement programmé\nCésarienne programmée\nLieu de l’accouchement :\nPosition de travail :\nDurant le travail :\n - Injection d’ocytocine \n - Péridurale\n - Episiotomie\n - Utilisation d’instruments\nComplications:\n - Tour de cordon\n - Autre\nPosition de délivrance :\nDurée de l’accouchement :\nVoie vaginale\nCésarienne\nImpression sur votre accouchement: \n\nAge actuel :\nPoids actuel :\nTaille actuelle :\nPérimètre crânien actuel :")
# La grossesse
tk.Label(page_premiere_visite_I, text="La grossesse", font=("Cadency", 14), bg="#FCE4EC").grid(row=1, column=0, padx=10, pady=0, sticky="nw")
grossesse_text = tk.Text(page_premiere_visite_I, height=10, width=50)
grossesse_text.grid(row=1, column=0, padx=10, pady=30)
grossesse_text.insert(tk.END, "Première grossesse :\n - Grossesse naturelle\n - PMA :\nConsommation pendant la grossesse: \n - tabac\n - drogue\n - alcool\nMédicaments / vaccinations :\nProblèmes medical pendant la grossesse :\n\nÉvénements durant la grossesse\n - traumatisme\n - stress\n - deuil\n - accident de voiture\n")
# Après l’accouchement
tk.Label(page_premiere_visite_I, text="Après l’accouchement", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=1, padx=10, pady=35, sticky="nw")
apres_accouchement_text = tk.Text(page_premiere_visite_I, height=10, width=50)
apres_accouchement_text.grid(row=0, column=1, padx=5, pady=65, sticky="nw")
apres_accouchement_text.insert(tk.END, "Vous êtes-vous sentie soutenue\nArriviez-vous à dormir quand votre bébé dormait\n\n\nProblèmes de santé : \n - Hospitalisations\n - Combien de temps\nAutre: ")
# Deuxième page : Première visite II
page_premiere_visite_II = ttk.Frame(onglets)
onglets.add(page_premiere_visite_II, text="Première visite II")
# Champ pour écrire la date de la consultation
date_label = tk.Label(page_premiere_visite_II, text="Date de la consultation:", font=("Cadency", 13, "bold"), bg="#FCE4EC")
date_label.grid(row=0, column=0, padx=2, pady=3, sticky="ne")
date_entry = tk.Entry(page_premiere_visite_II, width=20, font=("Cadency", 12))
date_entry.grid(row=0, column=1, padx=2, pady=0, sticky="nw")
date_entry.focus()
# Votre bébé à la naissance
tk.Label(page_premiere_visite_II, text="Votre bébé à la naissance", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=0, padx=10, pady=5, sticky="nw")
bebe_naissance_text = tk.Text(page_premiere_visite_II, height=28, width=50)
bebe_naissance_text.grid(row=0, column=0, padx=10, pady=35, sticky="nw")
bebe_naissance_text.insert(tk.END, "Interventions naissance\n - couveuse\n - aide respiratoire\n - médicaments:\nJaunisse\nPosition préférentielle de la tête :\n - droite\n - gauche)\nAllaitement :\n - À la demande oui/non/\n - Combien de tétées actuellement :\n - Prise du sein instantanée\n - Difficultés d’allaitement\nFreins restrictifs buccaux diagnostiqués : \n - Lequel: \nUtilisation de tire-lait\nPréparation commerciale pour nourrisson :\n - Marque :\n - Nombre de biberons/jour :\nTétines\nProblèmes digestifs\n - Coliques\n - Reflux \n - Bébé inconfortable\nNombre de couches par jour (urine et selles):\nPleurs difficiles à calmer\n")
# Votre bébé par la suite
tk.Label(page_premiere_visite_II, text="Votre bébé par la suite", font=("Cadency", 14), bg="#FCE4EC").grid(row=0, column=1, padx=10, pady=35, sticky="nw")
bebe_suite_text = tk.Text(page_premiere_visite_II, height=41, width=50)
bebe_suite_text.grid(row=0, column=1, padx=10, pady=65, sticky="e")
bebe_suite_text.insert(tk.END, "Age du sevrage allaitement maternel :\nDiversification\nProblèmes digestifs:\n - Coliques\n - Reflux\n - Nombre de Selles par jour\nRepas:\n - Fausses routes\n - Difficultés à déglutir\n - Prend du plaisir à manger\nPleurs difficiles à calmer\nPrise de médicaments\nVaccination\nProbiotiques\nMaladies,H/Chir\nChutes\nPertes de connaissance\nFractures\nEntorses\nLuxations\nAutres traumatismes\nMaladies congénitales:\n - Spécialistes vus:\nBébé Position : \n - Confortable Dos\n - Ventre\n - Pleure siège auto\n - Position asymétrique\n - tendu en arrière\nSommeil :\n - Difficultés de sommeil\n - Position de sommeil\nUtilisation (?h/j)\n - Transat\n - Balancelle\n - Trotteur\nPortage à bras ou écharpe\nAge de la position assise par soi-même\nAge du quatre pattes\nAge de la marche\n")
# Ajouter les champs pour la première visite...
# Troisième page : Traitement
page_traitement = ttk.Frame(onglets)
onglets.add(page_traitement, text="Traitement")
# Ajouter les champs pour le traitement...
label_traitement = tk.Label(page_traitement, text="Traitement:")
label_traitement.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_traitement = tk.Entry(page_traitement)
entry_traitement.grid(row=0, column=1, padx=10, pady=5)
# Quatrième page : Suivi
page_suivi = ttk.Frame(onglets)
onglets.add(page_suivi, text="Suivi")
# Ajouter les champs pour le suivi...
label_suivi = tk.Label(page_suivi, text="Suivi:")
label_suivi.grid(row=0, column=0, padx=10, pady=5, sticky="e")
entry_suivi = tk.Entry(page_suivi)
entry_suivi.grid(row=0, column=1, padx=10, pady=5)
# Bouton pour ajouter un nouveau suivi
bouton_nouveau_suivi = tk.Button(page_suivi, text="Nouveau Suivi", command=creer_nouveau_suivi)
bouton_nouveau_suivi.grid(row=1, columnspan=2, pady=10)
# Fonction pour rechercher un patient
def rechercher():
nom = ent_nom_recherche.get() # Utiliser ent_nom_recherche au lieu de ent_nom
prenom = ent_prenom_recherche.get() # Utiliser ent_prenom_recherche au lieu de ent_prenom
resultat = rechercher_patient(nom, prenom)
messagebox.showinfo("Résultat de la recherche", resultat)
def rechercher_patient(nom, prenom):
# Connexion à la base de données
connexion = sqlite3.connect("cabinet_chiro.db")
curseur = connexion.cursor()
# Exécuter la requête SQL pour rechercher le patient
curseur.execute("SELECT * FROM patients WHERE nom = ? AND prenom = ?", (nom, prenom))
resultat = curseur.fetchall()
# Fermer la connexion à la base de données
connexion.close()
return resultat
# Création de la fenêtre principale
window = tk.Tk()
window.title("Mon Cabinet Chiro")
window.geometry("500x500")
window.configure(bg="#FFFAF0")
# Création des onglets
onglets = ttk.Notebook(window)
# Onglet pour les fonctionnalités principales
onglet_principal = ttk.Frame(onglets)
onglets.add(onglet_principal, text='Nouveau Patient')
# Boutons pour créer une nouvelle fiche patient
btn_adulte = tk.Button(onglet_principal, text="Nouvelle fiche adulte", command=creer_fiche_patient_adulte, bg="#FCE4EC", fg="#000", font=("Cadency", 14))
btn_adulte.pack(pady=20)
btn_femme_enceinte = tk.Button(onglet_principal, text="Nouvelle fiche femme enceinte", command=creer_fiche_patient_femme_enceinte, bg="#FCE4EC", fg="#000", font=("Cadency", 14))
btn_femme_enceinte.pack(pady=20)
btn_pediatrique = tk.Button(onglet_principal, text="Nouvelle fiche pédiatrique", command=creer_fiche_patient_pediatrique, bg="#996666", fg="#000", font=("Cadency", 14))
btn_pediatrique.pack(pady=20)
# Ajout de l'onglet pour la recherche de patients
onglet_recherche = ttk.Frame(onglets)
onglets.add(onglet_recherche, text='Recherche de Patient')
# Cadre pour la recherche de patients
cadre_recherche = ttk.LabelFrame(onglet_recherche, text="Recherche de Patient")
cadre_recherche.pack(padx=10, pady=10)
# Étiquette et champ de saisie pour le nom dans l'onglet recherche
lbl_nom_recherche = ttk.Label(cadre_recherche, text="Nom :")
lbl_nom_recherche.grid(row=0, column=0, padx=5, pady=5, sticky='e')
ent_nom_recherche = ttk.Entry(cadre_recherche)
ent_nom_recherche.grid(row=0, column=1, padx=5, pady=5)
# Étiquette et champ de saisie pour le prénom dans l'onglet recherche
lbl_prenom_recherche = ttk.Label(cadre_recherche, text="Prénom :")
lbl_prenom_recherche.grid(row=1, column=0, padx=5, pady=5, sticky='e')
ent_prenom_recherche = ttk.Entry(cadre_recherche)
ent_prenom_recherche.grid(row=1, column=1, padx=5, pady=5)
# Bouton de recherche dans l'onglet recherche
btn_recherche_recherche = ttk.Button(cadre_recherche, text="Rechercher", command=rechercher)
btn_recherche_recherche.grid(row=2, column=0, columnspan=2, padx=5, pady=5)
# Ajout des onglets à la fenêtre principale
onglets.pack(expand=True, fill='both')
window.mainloop()