Académique Documents
Professionnel Documents
Culture Documents
d’Architecture et
programmation
répartie (RMI)
Application
de gestion
Médicaux
Institut Polytechnique Privé des Sciences
Avancées
• Un patient peut accéder au contenu de son dossier à partir d’une clef. Cet accès n’a qu’un caractère consultatif.
• Un administratif peut créer un dossier en donnant le nom du patient et son numéro de sécurité sociale, il peut
récupérer un dossier en donnant le nom du patient, il peut modifier le nom ou le numéro de sécurité sociale.
• Un médecin peut récupérer un dossier en donnant le nom du patient, il peut créer une note, ajouter une note à un
dossier.
I. Réalisation
1) Développement
Les étapes sont :
Une note a un auteur, une date de rédaction et un descriptif qui est un texte.
Ecriture d’une interface Java : ou on fait la déclaration des services accessibles à distance
public void creerDossier(Patient p) : créer un dossier en donnant le nom du patient et son numéro de sécurité
sociale
void modifierNomPatient(String nom)
Dossier_Medical rechercherDossier(String Nom) : récupérer un dossier en donnant le nom du patient,
public Dossier_Medical rechercherDossier(int id) :patient peut accéder au contenu de son dossier à partir d’une
clef
void CreationNote(String auteur, String date, String desc) : créer une note
public void addNote(Notes n,int id ) : ajouter une note à un dossier.
public Vector<Notes> recupererNote(int id) : Récupérer la liste des notes d’un dossier
public String lireDescriptionNote(int id, int note) : Lire le descriptif d’une note
package implementation;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.*;
import dossier.*;
import exception.*;
super();
this.patient = new Patient(patient.getNom(), patient.getNumeroSecurite());
@Override
public DossierMedical consulterDossier(String nom) throws RemoteException, Introuvable {
System.out.println("Recherche dossier par nom");
int index = -1;
for (int i = 0; i < dossierMedical.size(); i++) {
if (dossierMedical.get(i).getPatient().getNom().equalsIgnoreCase(nom)) {
index = i;
break;
}
}
if (index != -1) {
return dossierMedical.get(index);
} else {
throw new Introuvable();
}
}
@Override
public void creationDossier(String nom, int numeroSocial) throws RemoteException, ExistDeja {
patient = new Patient(nom, numeroSocial);
DossierMedicalImpl dossier = new DossierMedicalImpl(patient);
dossierMedical.add(dossier);
System.out.println("dossier patient est crée \n");
}
@Override
public void modifierNom(String nom, String nvNom) throws RemoteException {
for (DossierMedicalImpl dossier : dossierMedical) {
if (dossier.getPatient().getNom().equalsIgnoreCase(nom)) {
dossier.getPatient().setNom(nvNom);
}
}
System.out.println("Modifier du nom du patient\n");
}
@Override
public void modifierNumero(String nom, int numeroSocial) throws RemoteException {
for (DossierMedicalImpl dossier : dossierMedical) {
if (dossier.patient.getNom().equalsIgnoreCase(nom)) {
dossier.patient.setNumeroSecurite(numeroSocial);
}
}
System.out.println("modification du numero social du patient\n");
}
@Override
public List<Note> consulterNotes(String nom) throws RemoteException, Inexistant {
int index = 0;
for (int i = 0; i < dossierMedical.size(); i++) {
if ((dossierMedical.get(i).getPatient().getNom().equalsIgnoreCase(nom))) {
index = i;
System.out.println("Consultation note \n");
break;
}
}
if (index != 0) {
return dossierMedical.get(index).getPatient().getNotes();
} else {
throw new Inexistant();
}
@Override
public DossierMedicalImpl ajoutNote(Note note) throws RemoteException {
for (DossierMedicalImpl dossier : dossierMedical) {
if (dossier.getPatient().getNom().equalsIgnoreCase(note.getNomPatient())) {
dossier.getPatient().getNotes().add(note);
// notes.add(note);
System.out.println("Note est bien ajouté au dossier\n");
break;
}
}
return null;
}
@Override
public Note createNote(String nomPatient, String nomMedecin, String date, String noteMsg)
throws RemoteException, Introuvable {
}
Ecriture du programme client permet :
Interaction avec le serveur
Invocation de méthodes distantes
package test;
import java.rmi.Naming;
import java.util.Scanner;
import java.util.Vector;
import cabinet.*;
public class Client {
// espace admin
case "admin":
loop:while (reponse.equalsIgnoreCase("n")) {
break;
case 2:
System.out.print("Donner le nom du patient\n");
String nomP = scanner.next();
Dossier_Medical dossier =null;
dossier=dm.rechercherDossier(nomP);
if(dossier!=null){
System.out.println("Nom
patient :"+dossier.getPatient().getNom().toString()+
"\n Numro
social :"+dossier.getPatient().getNumSS());
}
break;
case 3:
System.out.print("Donner le num ss du patient \n");
dm.modifierNomPatient(scanner.next());
System.out.print("Num ss du patient est modifié \n");
break;
default:
}
System.out.println("Voulez vous quiter le mode admin ? [O/N] \n ");
reponse= scanner.next();
}
// espace patient
case "patient":
// code block
while (reponse.equalsIgnoreCase("n")) {
System.out.print("Taper:\n1: pour Récupérer un dossier en donnant la clef \\n"
+ "2: pour Récupérer la liste des notes d’un dossier\\n"
+ "3: pour Lire le descriptif d’une note\\n");
int actionP = scanner.nextInt();
while(reponse.equalsIgnoreCase("n"))
switch (actionP) {
case 1:
System.out.print("Donner le num ss du patient \n");
case 2:
System.out.print("Donner le id du dossier \n");
Vector<Notes> vn=dm.recupererNote(scanner.nextInt());
for(int i=0;i<vn.size();i++)
System.out.print("Note "+i+" : "+vn.elementAt(i).getAuteur()+"
"
+vn.elementAt(i).getDateRed()+" "+vn.elementAt(i).getDescription());
break;
case 3:
System.out.println("Donner id du dossier et du note \n");
String descr=dm.lireDescriptionNote(scanner.nextInt(),
scanner.nextInt());
System.out.println("Description du note : \n"+descr);
break;
default:
System.out.println("Action invalide");
break;
}
System.out.println("Voulez vous quiter le mode patient ? [O/N] ");
reponse= scanner.next();
}
break;
case "medecin":
// code block
while (reponse.equalsIgnoreCase("n")) {
System.out.print("Taper: \n 1 pour Récupérer un dossier à partir d’un nom de
patient \n"
+ "2 pour Créer une note \n" + "3 pour Ajouter une note à un
dossier \n");
int action = scanner.nextInt();
switch (action) {
case 1:
dm.rechercherDossier(scanner.next());
break;
case 2:
String auteur = scanner.nextLine();
String date = scanner.nextLine();
System.out.println("donner la description \n");
String desc = scanner.nextLine();
Notes n = new Notes(auteur, date, desc);
System.out.println("Note crée avec Succeés \n");
break;
case 3:
int id = scanner.nextInt();
String auteur1 = scanner.nextLine();
String dateR = scanner.nextLine();
System.out.println("donner la description \n");
String descri = scanner.nextLine();
Notes n2 = new Notes(auteur1, dateR, descri);
dm.addNote(n2, id);
System.out.println("Note ajoutée Succeés \n");
break;
default:
System.out.println("Action invalide");
break;
}
System.out.println("Voulez vous quiter le mode medecin? [O/N] ");
reponse= scanner.next();
}
break;
default:
System.out.println("Role invalide");
break;
catch (Exception e) {
}
}