Bonjour, pour un projet d'appli e-santé que j'ai entamé durant le confinement, je souhaiterais créer un réseau permettant à des médecins de partager des informations sur leurs patients et notamment que les rendez-vous pris pour un patient par un médecin du réseau soient également affichés dans l'agenda des médecins associés de son réseau.

Pour cela, j'ai créé une table réseau_médecins qui possède deux champs médecin_user_id et médecin_associate et une clé primaire qui réunit les deux ids.

A chaque ajout d'un médecin à son réseau par un utilisateur, deux lignes sont stockées dans la base pour faire l'association dans l'autre sens.

Je tente ensuite de récupérer les ids des médecins du réseau dans une ArrayList<Integer> à l'aide d'une fonction getMedecinsReseau(idMédecin) que j'appelle depuis ma fonction getAllFutureEventsByIdMedecin(idMédecin) qui doit récupérer les évènements(rendez-vous patients) de tous les médecins du réseau et les afficher dans une liste accessible par un click sur le jour concerné.

Mon problème est que la récupération des ids des médecins associés à l'utilisateur connecté ne semble pas se faire dans la fonction getMédecinsRéseau.

La console ne me renvoie pas d'erreur, mais dans la liste définie dans ma fonction getAllFutureEventsByIdMédecins(), je n'obtiens que l'id du médecin connecté que je rajoute après coup.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 
    private static final String CREATE_TABLE_RESEAU_MEDECINS =
            "CREATE TABLE " + TABLE_RESEAU_MEDECINS + "("
                    + COLUMN_MEDECIN_USER_ID + "INTEGER, "
                    + COLUMN_MEDECIN_ASSOCIATE + "INTEGER, "
                    + COLUMN_RESEAU_MEDECINS_ID + " INTEGER PRIMARY KEY" + ")";

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
 
 
    public ArrayList<Integer> getMedecinsReseau(int idMedecin) {
 
        ArrayList<Integer> medecinsDuReseau = new ArrayList<>();
        SQLiteDatabase db = this.getReadableDatabase();
        String selectQuery = "SELECT * FROM " + TABLE_RESEAU_MEDECINS + " WHERE " + COLUMN_MEDECIN_USER_ID + "=" + idMedecin;
        Cursor cursor = db.rawQuery(selectQuery, null);
 
        if (cursor.moveToFirst()) {
            while(cursor.moveToNext()) {
 
                int idAssociate = cursor.getInt(cursor.getColumnIndexOrThrow("medecin_associate_id"));
                Log.d("id_associate", String.valueOf(idAssociate));
                medecinsDuReseau.add(idAssociate);
            }
        }
 
        for(int i = 0; i < medecinsDuReseau.size(); i++) {
 
            Log.d("ID_MEDECIN_RESEAU", medecinsDuReseau.get(i).toString());
 
        }
 
        cursor.close();
        db.close();
 
        medecinsDuReseau.add(idMedecin);
 
        return medecinsDuReseau;
 
    }
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
 
 
public List<Event> getAllFutureEventsByIdMedecin(int IdMedecin) {
 
        ArrayList<Integer> medecinsReseau = this.getMedecinsReseau(IdMedecin);
 
        for(int i = 0; i < medecinsReseau.size(); i++) {
 
            Log.d("TESTID", medecinsReseau.get(i).toString());
 
        }
 
        List<Event> events = new ArrayList<>();
 
        Date dateToday = new Date();
 
        String query2 = "SELECT * FROM " + TABLE_EVENTS + "WHERE" + COLUMN_ID_MEDECIN + "IN (" + TextUtils.join(",", medecinsReseau.toArray()) + ") ";
 
        SQLiteDatabase db = this.getReadableDatabase();
 
        Cursor cursor = db.rawQuery(query2, null);
 
        if(cursor.moveToFirst()) {
 
            while (cursor.moveToNext()) {
 
                String date = cursor.getString(cursor.getColumnIndexOrThrow("date"));
                String month = cursor.getString(cursor.getColumnIndexOrThrow("month"));
                String year = cursor.getString(cursor.getColumnIndexOrThrow("year"));
                int idPatient = cursor.getInt(cursor.getColumnIndexOrThrow("patient_id"));
                int medecinId = cursor.getInt(cursor.getColumnIndexOrThrow("medecin_id"));
 
                Date reminderDate = convertStringToDate(date);
 
                if(reminderDate.after(dateToday) || reminderDate.equals(dateToday)) {
 
                    Event e = new Event(date, month, year, idPatient, medecinId);
 
                    events.add(e);
 
                }
 
            }
        }
 
        return events;
 
    }