From ea5497237537e16449dcb708d0ab7f3a484f7c9f Mon Sep 17 00:00:00 2001
From: lucas <lucas@Lucas>
Date: Fri, 28 Mar 2025 16:06:39 +0100
Subject: [PATCH] =?UTF-8?q?En=20tant=20que=20radiologue=20:=20possibilit?=
 =?UTF-8?q?=C3=A9=20de=20passer=20de=20la=20page=20radiologue=20=C3=A0=20l?=
 =?UTF-8?q?a=20page=20manipulateur=20(et=20aussi=20de=20revenir=20en=20arr?=
 =?UTF-8?q?i=C3=A8re)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/ui/Radio_Manip.fxml              |  56 +++++
 src/ui/Radio_ManipController.java    | 333 +++++++++++++++++++++++++++
 src/ui/Radio_manip.java              |  46 ++++
 src/ui/RadiologuePage.fxml           |   1 +
 src/ui/RadiologuePageController.java |  36 ++-
 5 files changed, 471 insertions(+), 1 deletion(-)
 create mode 100644 src/ui/Radio_Manip.fxml
 create mode 100644 src/ui/Radio_ManipController.java
 create mode 100644 src/ui/Radio_manip.java

diff --git a/src/ui/Radio_Manip.fxml b/src/ui/Radio_Manip.fxml
new file mode 100644
index 0000000..f525769
--- /dev/null
+++ b/src/ui/Radio_Manip.fxml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.net.URL?>
+<?import javafx.scene.control.Button?>
+<?import javafx.scene.control.ComboBox?>
+<?import javafx.scene.control.DatePicker?>
+<?import javafx.scene.control.Label?>
+<?import javafx.scene.control.ListView?>
+<?import javafx.scene.control.TableColumn?>
+<?import javafx.scene.control.TableView?>
+<?import javafx.scene.control.TextField?>
+<?import javafx.scene.image.ImageView?>
+<?import javafx.scene.layout.AnchorPane?>
+
+<AnchorPane id="AnchorPane" prefHeight="777.0" prefWidth="975.0" styleClass="mainFxmlClass" xmlns="http://javafx.com/javafx/23.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ui.Radio_ManipController">
+    <stylesheets>
+        <URL value="@fxml.css" />
+    </stylesheets>
+   <children>
+      <ListView fx:id="liste_image" layoutX="55.0" layoutY="459.0" prefHeight="180.0" prefWidth="364.0" />
+      <ImageView fx:id="image" fitHeight="202.0" fitWidth="317.0" layoutX="542.0" layoutY="441.0" pickOnBounds="true" preserveRatio="true" />
+      <Label layoutX="132.0" layoutY="69.0" text="Rechercher un patient" />
+      <TextField fx:id="fieldRecherhe" layoutX="278.0" layoutY="65.0" prefHeight="26.0" prefWidth="449.0" />
+      <Button layoutX="761.0" layoutY="65.0" mnemonicParsing="false" onAction="#actionRechercher" text="Rechercher" />
+      <Label fx:id="messageLabel" style="-fx-text-fill: red;" />
+      <Label layoutX="215.0" layoutY="707.0" text="Date de l'examen" />
+      <Button layoutX="459.0" layoutY="738.0" mnemonicParsing="false" onAction="#actionValider" text="Valider" />
+      <Label layoutX="55.0" layoutY="441.0" text="Liste des images :" />
+      <DatePicker fx:id="fieldExamen" layoutX="317.0" layoutY="703.0" prefHeight="25.0" prefWidth="141.0" />
+      <Label layoutX="508.0" layoutY="707.0" text="H" />
+      <ComboBox fx:id="comboBoxH" layoutX="518.0" layoutY="703.0" prefHeight="25.0" prefWidth="63.0" />
+      <Label layoutX="588.0" layoutY="707.0" text="min" />
+      <ComboBox fx:id="comboBoxMin" layoutX="614.0" layoutY="703.0" prefHeight="25.0" prefWidth="63.0" />
+      <TableView fx:id="tableViewPatient" layoutX="133.0" layoutY="122.0" prefHeight="70.0" prefWidth="706.0">
+         <columns>
+            <TableColumn fx:id="columnIpp" prefWidth="202.39996337890625" text="IPP Patient" />
+            <TableColumn fx:id="columnPrenom" prefWidth="267.9999694824219" text="Prénom" />
+            <TableColumn fx:id="columnNom" minWidth="0.0" prefWidth="236.0" text="Nom " />
+         </columns>
+      </TableView>
+      <Label layoutX="637.0" layoutY="391.0" text="DMR" />
+      <Button layoutX="859.0" layoutY="24.0" mnemonicParsing="false" onAction="#actionDeconnexion" text="déconnexion" />
+      <Label layoutX="278.0" layoutY="662.0" text="Acte" />
+      <ComboBox id="comboAnat" fx:id="comboAnat" layoutX="512.0" layoutY="658.0" prefHeight="25.0" prefWidth="133.0" promptText="Anatomie " />
+      <ComboBox id="comboImagerie" fx:id="comboImagerie" layoutX="325.0" layoutY="658.0" prefHeight="25.0" prefWidth="133.0" promptText="Imagerie" />
+      <TableView fx:id="tableViewDmrPatient" layoutX="133.0" layoutY="228.0" maxWidth="-Infinity" minHeight="-Infinity" prefHeight="202.0" prefWidth="706.0">
+         <columns>
+            <TableColumn fx:id="columnPrenomDmr" prefWidth="136.0" text="Nom " />
+            <TableColumn fx:id="columnNomDmr" prefWidth="138.39996337890625" text="Prénom" />
+            <TableColumn fx:id="columnDateOuverture" prefWidth="128.79995727539062" text="Date d'ouverture" />
+            <TableColumn fx:id="columnMotif" prefWidth="255.20001220703125" text="Motif" />
+         </columns>
+      </TableView>
+      <Button fx:id="PageRadio" layoutX="735.0" layoutY="458.0" mnemonicParsing="false" onAction="#retourPageRadiologue" text="Revenir à la page Radiologue" />
+   </children>
+</AnchorPane>
diff --git a/src/ui/Radio_ManipController.java b/src/ui/Radio_ManipController.java
new file mode 100644
index 0000000..8feea00
--- /dev/null
+++ b/src/ui/Radio_ManipController.java
@@ -0,0 +1,333 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/javafx/FXMLController.java to edit this template
+ */
+package ui;
+
+import fc.Dmr;
+import fc.DmrPatient;
+import fc.Examen;
+import fc.Genre;
+import static fc.MessageDErreur.validerDate;
+import static fc.MessageDErreur.validerNom;
+import static fc.MessageDErreur.validerNumeroSecu;
+import static fc.MessageDErreur.validerPrenom;
+import fc.Pacs;
+import fc.Patient;
+import fc.Radiologue;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.sql.Date;
+import java.time.LocalDate;
+import java.time.LocalTime;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Node;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.Button;
+import javafx.scene.control.ComboBox;
+import javafx.scene.control.DatePicker;
+import javafx.scene.control.Label;
+import javafx.scene.control.ListView;
+import javafx.scene.control.TableColumn;
+import javafx.scene.control.TableView;
+import javafx.scene.control.TextField;
+import javafx.scene.control.cell.PropertyValueFactory;
+import javafx.scene.image.Image;
+import javafx.scene.image.ImageView;
+import javafx.stage.Stage;
+import javafx.util.Pair;
+
+/**
+ * FXML Controller class
+ *
+ * @author valen
+ */
+public class Radio_ManipController implements Initializable {
+
+    private Radiologue radiologue;
+
+    public void setRadiologue(Radiologue radiologue) {
+        this.radiologue = radiologue;
+
+    }
+
+    /**
+     * Initializes the controller class.
+     */
+    @FXML
+    private ListView liste_image = new ListView();
+    
+    @FXML
+    private Button PageRadio;
+
+    @FXML
+    private ListView liste_dmr = new ListView();
+
+    @FXML
+    private ImageView image = new ImageView();
+
+    @FXML
+    private TextField fieldDMR = new TextField();
+
+    @FXML
+    private TableView<DmrPatient> tableViewDmrPatient;
+    @FXML
+    private TableView<Patient> tableViewPatient;
+
+    @FXML
+    private TableColumn<Patient, String> columnIpp;
+    @FXML
+    private TableColumn<Patient, String> columnNom;
+    @FXML
+    private TableColumn<Patient, String> columnPrenom;
+    @FXML
+    private TableColumn<DmrPatient, String> columnMotif;
+    @FXML
+    private TableColumn<DmrPatient, String> columnDateOuverture;
+
+    @FXML
+    private TableColumn<DmrPatient, String> columnNomDmr;
+    @FXML
+    private TableColumn<DmrPatient, String> columnPrenomDmr;
+
+    @FXML
+    private TextField fieldRecherhe = new TextField();
+
+    @FXML
+    private Label messageLabel;
+
+    @FXML
+    private DatePicker fieldDateNaissance = new DatePicker();
+
+    @FXML
+    private DatePicker fieldExamen = new DatePicker();
+
+    @FXML
+    private ComboBox<Integer> comboBoxH;
+
+    @FXML
+    private ComboBox<Integer> comboBoxMin;
+
+    @FXML
+    private ComboBox<String> comboImagerie;
+
+    @FXML
+    private ComboBox<String> comboAnat;
+
+    @Override
+    public void initialize(URL url, ResourceBundle rb) {
+        // TODO
+        columnIpp.setCellValueFactory(new PropertyValueFactory<>("IPP"));
+        columnNom.setCellValueFactory(new PropertyValueFactory<>("nom"));
+        columnPrenom.setCellValueFactory(new PropertyValueFactory<>("prenom"));
+
+        columnDateOuverture.setCellValueFactory(new PropertyValueFactory<>("dateOuverture"));
+        columnMotif.setCellValueFactory(new PropertyValueFactory<>("motif"));
+        columnNomDmr.setCellValueFactory(new PropertyValueFactory<>("nom"));
+        columnPrenomDmr.setCellValueFactory(new PropertyValueFactory<>("prenom"));
+
+        Pacs p = new Pacs();
+        liste_image.setItems(p.ListImage());
+
+        Dmr dmr = new Dmr();
+        List<Dmr> dmr_actif = dmr.dmrActiver();
+        List<DmrPatient> DmrPatient = new ArrayList<>();
+        for (Dmr d : dmr_actif) {
+            Patient pat = new Patient();
+            DmrPatient.add(new DmrPatient(d, pat.rechercherPatients(d.getIPP(), null, null, null, null, null).get(0)));
+        }
+        ObservableList<DmrPatient> patient_actif = FXCollections.observableArrayList(DmrPatient);
+        tableViewDmrPatient.setItems(patient_actif);
+        comboImagerie.getItems().add("Radio");
+        comboImagerie.getItems().add("IRM");
+        comboImagerie.getItems().add("Scanner");
+        comboAnat.getItems().add("abdomen");
+        comboAnat.getItems().add("sinus");
+        comboAnat.getItems().add("brain");
+
+        for (int i = 0; i <= 24; i++) {
+            comboBoxH.getItems().add(i);
+        }
+
+        for (int i = 0; i <= 60; i++) {
+            comboBoxMin.getItems().add(i);
+        }
+
+        LocalTime currentTime = LocalTime.now();
+
+        int heure = currentTime.getHour();  // Récupère l'heure
+        int minute = currentTime.getMinute();
+
+        // Optionnel : définir une valeur par défaut
+        comboBoxH.setValue(heure);
+        comboBoxMin.setValue(minute);
+
+        liste_image.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
+            if (newValue != null) { // Vérifie qu'un élément est sélectionné
+
+                System.out.println("Image sélectionnée : " + newValue);
+                actionSurSelection(p.pathWithNom(newValue.toString()));
+
+            }
+        });
+        tableViewPatient.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
+            if (newValue != null) { // Vérifie qu'un élément est sélectionné
+
+                actionSurSelectionPatient(newValue);
+
+            }
+        });
+
+    }
+
+    private void actionSurSelection(String path) {
+        try {
+            //Image image2 = new Image("file:" + "src/jpg/abdomen/cor494-i436.jpg");
+            Image image2 = new Image(new FileInputStream(path));// Assurez-vous que le chemin est correct
+            this.image.setImage(image2);
+            this.image.setPreserveRatio(true);
+            this.image.setFitWidth(250);
+            this.image.setFitHeight(250);
+
+            System.out.println("Image chargée : ");
+        } catch (Exception e) {
+            System.out.println("Erreur de chargement de l'image : " + e.getMessage());
+        }
+
+    }
+
+    private void actionSurSelectionPatient(Patient patient) {
+        List<Dmr> dmrs = patient.recupererDMR();
+        List<DmrPatient> DmrPatient = new ArrayList<>();
+        for (Dmr d : dmrs) {
+            Patient pat = new Patient();
+            DmrPatient.add(new DmrPatient(d, pat.rechercherPatients(d.getIPP(), null, null, null, null, null).get(0)));
+        }
+        ObservableList<DmrPatient> patient_actif = FXCollections.observableArrayList(DmrPatient);
+        tableViewDmrPatient.setItems(patient_actif);
+
+    }
+
+    @FXML
+    private void retourPageRadiologue(ActionEvent event) {
+        try {
+            
+            FXMLLoader loader = new FXMLLoader(getClass().getResource("RadiologuePage.fxml"));
+            Parent root = loader.load();
+
+          
+            RadiologuePageController controller = loader.getController();
+
+            
+            controller.setRadiologue(this.radiologue);
+            
+            Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
+
+            // Changer la scène
+            stage.setScene(new Scene(root));
+            stage.setTitle("Page Radiologue");
+            stage.setFullScreen(true);
+            stage.show();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @FXML
+
+    private void actionRechercher() {
+        String rechercheUnifiee = fieldRecherhe.getText().trim();
+        messageLabel.setText("");
+
+        // Validation simplifiée
+        if (rechercheUnifiee.isEmpty()) {
+            messageLabel.setText("Veuillez entrer un critère de recherche");
+            return;
+        }
+
+        // Utilisation de la nouvelle méthode de recherche
+        Patient patient = new Patient();
+        Pair<List<Patient>, String> result = patient.rechercherPatients2(rechercheUnifiee);
+
+        // Gestion des erreurs
+        if (!result.getValue().isEmpty()) {
+            messageLabel.setText(result.getValue());
+        }
+
+        // Affichage des résultats
+        ObservableList<Patient> items = FXCollections.observableArrayList(result.getKey());
+        tableViewPatient.setItems(items);
+    }
+
+    @FXML
+    private void actionDeconnexion(ActionEvent event) {
+        try {
+            // Charger la page de connexion
+
+            Parent root = FXMLLoader.load(getClass().getResource("ConnexionPage.fxml"));
+
+            // Obtenir la scène actuelle et la fenêtre
+            Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
+
+            Scene scene = new Scene(root);
+
+            // Changer la scène pour la page de connexion
+            stage.setScene(scene);
+            stage.setTitle("Page de Connexion");
+            stage.setFullScreen(true);
+            stage.show();
+        } catch (IOException e) {
+            e.printStackTrace();
+            // Afficher un message d'erreur à l'utilisateur si nécessaire
+        }
+    }
+
+    @FXML
+    private void actionValider() {
+
+        String imageselect = (String) liste_image.getSelectionModel().getSelectedItems().get(0);
+
+        DmrPatient dmrselect = tableViewDmrPatient.getSelectionModel().getSelectedItems().get(0);
+
+        LocalDate selectedDate = fieldExamen.getValue();
+
+        System.out.println(selectedDate);
+        int selectedIndexH = comboBoxH.getSelectionModel().getSelectedIndex();
+
+        Integer selectedItemH = comboBoxH.getItems().get(selectedIndexH);
+        int selectedIndexM = comboBoxH.getSelectionModel().getSelectedIndex();
+
+        Integer selectedItemM = comboBoxH.getItems().get(selectedIndexM);
+        String h = " " + selectedItemH + ":";
+        String m = "" + selectedItemM + "";
+        String date = selectedDate.toString() + h + m;
+
+        System.out.println("date : " + date);
+
+        if (imageselect == null || dmrselect == null) {
+            System.out.println("tous les champs ne sont pas remplis");
+
+        }
+        Pacs p = new Pacs();
+        String chemin = p.pathWithNom(imageselect);
+
+        Examen ex = new Examen();
+        System.out.println("création");
+        String acte = comboImagerie.getValue() + " " + comboAnat.getValue();
+        System.out.println("motif :" + dmrselect.getMotif());
+        ex.creerExamen(dmrselect.getId_dmr(), date, chemin, acte);
+        this.initialize(null, null);
+
+    }
+
+}
diff --git a/src/ui/Radio_manip.java b/src/ui/Radio_manip.java
new file mode 100644
index 0000000..e846855
--- /dev/null
+++ b/src/ui/Radio_manip.java
@@ -0,0 +1,46 @@
+/*
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
+ * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
+ */
+package ui;
+
+import fc.Administration;
+import fc.Manipulateur;
+import java.io.IOException;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+
+/**
+ *
+ * @author valen
+ */
+public class Radio_manip extends Stage{
+   
+
+    private Manipulateur manip;
+
+    public Radio_manip(Manipulateur manip) {
+        this.manip = manip;
+        loadFXML();
+    }
+
+    private void loadFXML() {
+        try {
+            FXMLLoader loader = new FXMLLoader(getClass().getResource("/ui/Manip.fxml"));
+            Parent root = loader.load();
+            ManipController controller = loader.getController();
+            
+            
+
+            Scene scene = new Scene(root, 800, 600);
+            this.setScene(scene);
+            this.setFullScreen(true);
+            this.setTitle("Page Manipulateur");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+}
+
diff --git a/src/ui/RadiologuePage.fxml b/src/ui/RadiologuePage.fxml
index 64d9bb8..f7f282f 100644
--- a/src/ui/RadiologuePage.fxml
+++ b/src/ui/RadiologuePage.fxml
@@ -21,6 +21,7 @@
             <TextField fx:id="fieldRecherhe" />
             <Button mnemonicParsing="false" onAction="#actionRechercher" text="Rechercher" />
             <Label fx:id="messageLabel" style="-fx-text-fill: red;" />
+         <Button fx:id="PageManip" mnemonicParsing="false" onAction="#ouvertureManip" text="Ouvrir page Manipulateur" />
         </children>
     </VBox>
     <VBox prefHeight="200.0" prefWidth="100.0">
diff --git a/src/ui/RadiologuePageController.java b/src/ui/RadiologuePageController.java
index 78e295f..993a374 100644
--- a/src/ui/RadiologuePageController.java
+++ b/src/ui/RadiologuePageController.java
@@ -38,9 +38,13 @@ public class RadiologuePageController {
     @FXML
     private TextField textFieldDMR;
     @FXML
-    
+
     private TextField fieldRecherhe;
     
+    @FXML
+    private Button PageManip;
+    
+
     @FXML
     private Button buttonRechercher;
     @FXML
@@ -231,6 +235,36 @@ public class RadiologuePageController {
         tableViewPatient.setItems(FXCollections.observableArrayList(result.getKey()));
     }
 
+    @FXML
+
+    private void ouvertureManip(ActionEvent event) {
+        try {
+            // Charger la page Radio_Manip
+            FXMLLoader loader = new FXMLLoader(getClass().getResource("Radio_Manip.fxml"));
+            Parent root = loader.load();
+
+            // Obtenir le contrôleur de la nouvelle page
+            Radio_ManipController controller = loader.getController();
+
+            // Passer le radiologue au contrôleur de la nouvelle page
+            controller.setRadiologue(radiologue);
+
+            // Obtenir la scène actuelle et la fenêtre
+            Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
+
+            Scene scene = new Scene(root);
+
+            // Changer la scène pour la page Radio_Manip
+            stage.setScene(scene);
+            stage.setTitle("Page Manipulateur");
+            stage.setFullScreen(true);
+            stage.show();
+        } catch (IOException e) {
+            e.printStackTrace();
+            showAlert("Erreur", "Impossible d'ouvrir la page manipulateur");
+        }
+    }
+
     private void CouleurDeLigne() {
         // Appliquer un style aux lignes en fonction de l'état du compte rendu
         tableViewExamens.setRowFactory(tv -> new TableRow<Examen>() {
-- 
GitLab