Select Git revision
Board.class
Forked from
COUETOUX Basile / FirefighterStarter
Source project has a limited visibility.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
MedicalFileController.java 5.28 KiB
package com.projet.projetIndu.controllers;
import com.projet.projetIndu.entities.MedicalDocument;
import com.projet.projetIndu.entities.MedicalFile;
import com.projet.projetIndu.repositories.MedicalDocumentRepository;
import com.projet.projetIndu.services.MedicalFileService;
import org.springframework.http.*;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import java.io.IOException;
import java.time.LocalDate;
import java.util.List;
import java.util.Optional;
@Controller
@RequestMapping("/medical-files")
public class MedicalFileController {
private final MedicalFileService medicalFileService;
private final MedicalDocumentRepository medicalDocumentRepository;
public MedicalFileController(MedicalFileService medicalFileService, MedicalDocumentRepository medicalDocumentRepository) {
this.medicalFileService = medicalFileService;
this.medicalDocumentRepository = medicalDocumentRepository;
}
// Afficher tous les dossiers médicaux
@GetMapping
public String listMedicalFiles(Model model) {
List<MedicalFile> medicalFiles = medicalFileService.getAllMedicalFiles();
System.out.println("Dossiers médicaux récupérés : " + medicalFiles.size());
model.addAttribute("medicalFiles", medicalFiles);
return "medical-files";
}
// Afficher un dossier médical spécifique
@GetMapping("/{id}")
public String viewMedicalFile(@PathVariable Long id, Model model) {
return medicalFileService.getMedicalFileById(id)
.map(medicalFile -> {
model.addAttribute("medicalFile", medicalFile);
return "view-medical-file";
})
.orElse("error");
}
// Créer un dossier médical
@PostMapping("/create")
public String createMedicalFile(@ModelAttribute MedicalFile medicalFile) {
medicalFileService.saveMedicalFiles(medicalFile);
return "redirect:/medical-files";
}
// Mettre à jour l'historique médical
@PostMapping("/{id}/history")
public String updateMedicalFileHistory(@PathVariable Long id,
@RequestParam String antecedent,
@RequestParam String notes,
@RequestParam LocalDate consultationDate) {
medicalFileService.updateMedicalFileHistory(id, antecedent, notes, consultationDate);
return "redirect:/medical-files/" + id;
}
// Ajouter un document à un dossier médical
@PostMapping("/{id}/documents")
public String uploadMedicalFileDocument(@PathVariable Long id, @RequestParam("document") MultipartFile document, RedirectAttributes redirectAttributes) {
try {
medicalFileService.uploadMedicalFileDocument(id, document);
} catch (IOException e) {
e.printStackTrace();
redirectAttributes.addFlashAttribute("errorMessage", "Erreur lors de l'upload du document.");
return "redirect:/medical-files/" + id;
}
return "redirect:/medical-files/" + id;
}
// Télécharger un document médical
@GetMapping("/{id}/documents/{docId}")
@ResponseBody
public ResponseEntity<byte[]> getMedicalFileDocument(@PathVariable Long id, @PathVariable Long docId) {
try {
MedicalDocument document = medicalFileService.getMedicalFileDocument(id, docId);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDisposition(ContentDisposition.attachment()
.filename(document.getFileName())
.build());
return new ResponseEntity<>(document.getFileData(), headers, HttpStatus.OK);
} catch (RuntimeException e) {
return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
}
}
// Supprimer un document médical
@DeleteMapping("/{id}/documents/{docId}")
public String deleteDocument(@PathVariable Long id, @PathVariable Long docId, RedirectAttributes redirectAttributes) {
Optional<MedicalDocument> document = medicalDocumentRepository.findById(docId);
if (document.isPresent()) {
medicalDocumentRepository.delete(document.get());
redirectAttributes.addFlashAttribute("successMessage", "Document supprimé avec succès.");
} else {
redirectAttributes.addFlashAttribute("errorMessage", "Document introuvable.");
}
return "redirect:/medical-files/" + id;
}
// Supprimer un dossier médical
@DeleteMapping("/{id}")
public String deleteMedicalFile(@PathVariable Long id, RedirectAttributes redirectAttributes) {
try {
medicalFileService.deleteMedicalFileById(id);
redirectAttributes.addFlashAttribute("successMessage", "Dossier médical supprimé avec succès.");
} catch (Exception e) {
redirectAttributes.addFlashAttribute("errorMessage", "Erreur lors de la suppression du dossier médical.");
}
return "redirect:/medical-files";
}
}