Bonjour,

Je sais que la categorie ne conviens pas pour ma quesiton. (il serait peut etre judicieux d'ajouter une categorie, programmation python generale).

Je suis toujorsu sur l'implementation du logiciel pour les medecins. Je voudrais avoir vaut conseil par rapport aux stockages des données concernant les differens patient.

Se que je pensais faire, c'etait de stocker lesdonnées (nom, prenom, ect...) dans un fichier "information.data). A l'ajout d'un nouveau patient, je créé un dossier, et je créé le fichier contenant les informations. Ensuite le medecin n'a plus qu'a ajouter les fichier des differentes test effectuer par le patient.

Se que je n'aime pas dans cette solution, c'est que le medecin peut acceder au fichieret donc causer des bug a l'application. L'aventage c'est que ca ne demande pas d'installation de librairie supplementaire et qu'il est tres facile d'ecrire et de lire les fichiers.

mon probleme dans cette implementation, c'est que je ne sais pas coment lié mon repertoire a ma personne. Je voudrais pouvoir créé une listbox avec tout les noms et prenoms des patients deja inscrit, afin qu'il est plus qu'a choisir la personne. et que a chaque personne je lui mette le chemin d'acces a son fichier pour ensuite pouvoir faire une liste de tout les fichiers exploitables.

A niveau code pour l'instant j'ai créé une classe personne. en voici le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# -*- coding: cp1252 -*-
class Personne:  
    def __init__(self):
        self.pathfile = ""
        self.name = ""
        self.firstname = ""
        self.adress = ""
        self.CP = 0
        self.city = ""
        self.telephone = ""
        self.birthday = ""
        self.doctor = ""
 
    # accessors
    def getName(self):
        return self.name
    def getFirstname(self):
        return self.firstname
    def getAdress(self):
        return self.adress
    def getCP(self):
        return self.CP
    def getCity(self):
        return self.city
    def getTelephone(self):
        return self.telephone
    def getBirthday(self):
        return self.birthday
    def getDoctor(self):
        return self.doctor
 
    # mutators
    def setName(self, new_name):
        self.name = new_name
    def setFirstname(self, new_firstname):
        self.firstname = new_firstname
    def setAdress(self, new_adress):
        self.adress = new_adress
    def setCP(self, new_CP):
        self.CP = new_CP
    def setCity(self, new_city):
        self.city = new_city
    def setTelephone(self, new_telephone):
        self.telephone = new_telephone
    def setBirthday(self, new_birthday ):
        self.birthday = new_birthday
    def setDoctor(self, new_doctor):
        self.doctor = new_doctor
 
 
    # permet de mettre a jour les infos de la personne
    def fctUpdateInfo( self, name, firstname, birthday, adress, cp, city, tel, doctor ):
        self.setName( name )
        self.setFirstname( firstname )
        self.setBirthday( birthday )
        self.setAdress( adress )
        self.setCP( cp )
        self.setCity( city )
        self.setTelephone( tel )
        self.setDoctor( doctor )
 
    # permet d'ecrire le fichier à la creation d'un nouveau patient
    def fctWriteInformation( self, path ):
        myfile = open( path, 'w' )
        myfile.write( self.getName() + "\n" )
        myfile.write( self.getFirstname() + "\n" )
        myfile.write( self.getBirthday() + "\n" )
        myfile.write( self.getAdress() + "\n" )
        myfile.write( self.getCP() + "\n" )
        myfile.write( self.getCity() + "\n" )
        myfile.write( self.getTelephone() + "\n" )
        myfile.write( self.getDoctor() + "\n" )
        myfile.close()
 
    # permet de lire le fichier d'un patient
    def fctReadFile():
        myfile = open( path, 'r' )
        setName( myfile.read() )
        setFirstname( myfile.read() )
        setBirthday( myfile.read() )
        setAdress( myfile.read() )
        setCP( myfile.read() )
        setCity( myfile.read() )
        setTelephone( myfile.read() )
        setDoctor( myfile.read() )
        myfile.close()

Et voici mon interface graphique pour le moment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# -*- coding: cp1252 -*-
from Tkinter import *
from Personne import *
import tkMessageBox
import os
import shutil
 
patients = []
 
def fctMakeList():
    return
 
 
 
 
def onAdd():
    if( txtName.get() == "" ):
        tkMessageBox.showwarning("Error", "Give a name" )
        return
    if( txtFirstname.get() == "" ):
        tkMessageBox.showwarning("Error", "Give a first name" )
        return
    if( txtAdress.get() == "" ):
        tkMessageBox.showwarning("Error", "Give an adress" )
        return
    if( txtCP.get() == "" ):
        tkMessageBox.showwarning("Error", "Give a code postal" )
        return
    if( txtCity.get() == "" ):
        tkMessageBox.showwarning("Error", "Give a city" )
        return
    if( txtTelephone.get() == "" ):
        tkMessageBox.showwarning("Error", "Give a telephone number" )
        return
    if( txtBirthday.get() == "" ):
        tkMessageBox.showwarning("Error", "Give a birth day" )
        return
    if( txtDoctor.get() == "" ):
        tkMessageBox.showwarning("Error", "Give a name of the doctor" )
        return
 
    # add the personne
    one_personne = Personne()
    one_personne.fctUpdateInfo( txtName.get(),txtFirstname.get(),txtBirthday.get(),txtAdress.get(), \
                                txtCP.get(),txtCity.get(),txtTelephone.get(), txtDoctor.get() )
 
    # create a directory for her
    one_personne.pathfile = one_personne.getName()
    index = 1
    # test if the direcrty with her name exists
    while( os.path.isdir( one_personne.pathfile ) ):# renvoit True si path désigne un répertoire existant
        one_personne.pathfile = one_personne.pathfile + str( index )
        index = index + 1
    os.makedirs(one_personne.pathfile, mode=0777) # créé tous les repertoires qui existent pas
 
    tkMessageBox.showinfo("Information", "The data for are be save in the directory: " + one_personne.pathfile )
 
    # creer un fichier qui va contenir toute les données
    path = one_personne.pathfile + "/private.data"
    one_personne.fctWriteInformation( path )
 
 
def onDelete():
    answer = tkMessageBox.askyesno("Comfirmation", "Are you sure to delete this directory?")
    if( answer):
        shutil.rmtree(one_personne.pathfile) # suprrime un repertoire non vide
 
############################################
# interface graphique
############################################
window = Tk()
lName = Label( window, text="Name: " ).grid( row = 0, column = 0, sticky = E)
txtName = Entry( window )
txtName.focus()
txtName.grid(row = 0, column = 1)
 
lFirstname = Label( window, text="Firstname: " ).grid( row = 0, column = 2, sticky = E)
txtFirstname = Entry( window )
txtFirstname.focus()
txtFirstname.grid(row = 0, column = 3)
 
lAdress = Label( window, text="Adress: " ).grid( row = 1, column = 0, sticky = E)
txtAdress = Entry( window )
txtAdress.focus()
txtAdress.grid(row = 1, column = 1)
 
lCP = Label( window, text="Code postal: " ).grid( row = 2, column = 0, sticky = E)
txtCP = Entry( window )
txtCP.focus()
txtCP.grid(row = 2, column = 1)
 
lCity = Label( window, text="City: " ).grid( row = 2, column = 2, sticky = E)
txtCity = Entry( window )
txtCity.focus()
txtCity.grid(row = 2, column = 3)
 
lTelephone = Label( window, text="Telephone: " ).grid( row = 3, column = 0, sticky = E)
txtTelephone = Entry( window )
txtTelephone.focus()
txtTelephone.grid(row = 3, column = 1)
 
lBirthday = Label( window, text="Birth day: ").grid( row = 3, column = 2, sticky = E)
txtBirthday = Entry( window )
txtBirthday.focus()
txtBirthday.grid( row = 3, column = 3)
 
lDoctor = Label( window, text="Doctor: " ).grid( row = 4, column = 0, sticky = E)
txtDoctor = Entry( window )
txtDoctor.focus()
txtDoctor.grid(row = 4, column = 1)
 
btnAdd = Button( window, text="Add", command=onAdd )
btnAdd.grid( row = 5, column = 1 )
 
btnDelete = Button( window, text="Delete", command=onDelete )
btnDelete.grid( row = 5, column = 2 )
 
btnList = Button( window, text="Make list", command=fctMakeList)
btnList.grid( row = 5, column = 2 )
 
window.mainloop()


Je ne souhaite pas encore transformer mon entry nom en listbox. Je voudrais juste que vous m'aidiez a afficher un messagebox avec la liste des noms des patients et a cote le chemin complet d'acces a son dossier. Pour cela il faut ecrire la fonction "fctMakeList"Une fois que j'ai cela il serra facile d'implementer le reste. Ou peut etre avez vous une toute autre idée d'implementation.

structure du fichier "private.data" pour un nouveau patient:
nom
prenom
date nessance
adresse
CP
ville
telephone
medecin traitent

structure du fichier "private.data" pour un ancien patient:
nom
prenom
date nessance
adresse
CP
ville
telephone
medecin traitent

nom fichier du test
date et jour du test
nom medecin qui a encadrer le test
# commantaire lié au test et aux courbes obtenu
possibilité d'un evantuel traitement (serie d'excercice a faire) #

nom fichier du test
date et jour du test
nom medecin qui a encadrer le test
# commantaire lié au test et aux courbes obtenu
possibilité d'un evantuel traitement (serie d'excercice a faire) #
...

J'espere que c'est claire.
erci de votre aide