diff --git a/src/main/java/com/projet/projetIndu/entities/Appointment.java b/src/main/java/com/projet/projetIndu/entities/Appointment.java index 0b8fead5e0b789ec4592dc6e769fb56d38b793e5..db74bfeb5727f407db6f4ae4a22acf967ad5ea3d 100644 --- a/src/main/java/com/projet/projetIndu/entities/Appointment.java +++ b/src/main/java/com/projet/projetIndu/entities/Appointment.java @@ -21,11 +21,15 @@ public class Appointment { @ManyToOne @JoinColumn(name = "patient_id", nullable = false) - private Patient patient; //clé étrangère vers Patient + private Patient patient; @ManyToOne @JoinColumn(name = "doctor_id", nullable = false) - private Doctor doctor; //clé étrangère vers Doctor + private Doctor doctor; + + @OneToOne + @JoinColumn(name = "invoice_id", nullable = false) + private Invoice invoice; @DateTimeFormat(pattern = "dd/MM/yyyy HH:mm") @Column(nullable = false, updatable = false) diff --git a/src/main/java/com/projet/projetIndu/entities/Doctor.java b/src/main/java/com/projet/projetIndu/entities/Doctor.java index 7da0a7541443949a80acece2a6bf52e9ca397679..5ac0d61f52caab8281dd5c95418f280639a502d2 100644 --- a/src/main/java/com/projet/projetIndu/entities/Doctor.java +++ b/src/main/java/com/projet/projetIndu/entities/Doctor.java @@ -12,36 +12,14 @@ import java.time.LocalDateTime; @Getter @Setter @NoArgsConstructor -public class Doctor { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(nullable = false) - private String firstName; - - @Column(nullable = false) - private String lastName; - +public class Doctor extends User { private String speciality; - @Column(unique = true, nullable = false) - private String email; - - private String phone; - private String address; - @Column(nullable = false, updatable = false) - private LocalDateTime createdAt = LocalDateTime.now(); - - - /// Pour le codage en dur (à retirer ensuite) - public Doctor(String firstName, String lastName, String speciality, String email) { - this.firstName = firstName; - this.lastName = lastName; + public Doctor(String firstName, String lastName, String phoneNumber, String email, String address, String username, String password, Role role) { + super(firstName, lastName, phoneNumber, email, address, username, password, role); this.speciality = speciality; - this.email = email; } -} + + } diff --git a/src/main/java/com/projet/projetIndu/entities/MedicalHistory.java b/src/main/java/com/projet/projetIndu/entities/HealthHistorical.java similarity index 74% rename from src/main/java/com/projet/projetIndu/entities/MedicalHistory.java rename to src/main/java/com/projet/projetIndu/entities/HealthHistorical.java index 902e20a34e8465578c59e54ecaacfe5932fd037d..6ee646eb12c40f220cf10f619b24af42263684bd 100644 --- a/src/main/java/com/projet/projetIndu/entities/MedicalHistory.java +++ b/src/main/java/com/projet/projetIndu/entities/HealthHistorical.java @@ -11,15 +11,13 @@ import java.time.LocalDate; @Data @NoArgsConstructor @AllArgsConstructor -class MedicalHistory { +class HealthHistorical { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - private String history; + + private String antecedent; private String notes; private LocalDate consultationDate; - @ManyToOne - @JoinColumn(name = "patient_id") - private Patient patient; } \ No newline at end of file diff --git a/src/main/java/com/projet/projetIndu/entities/Invoice.java b/src/main/java/com/projet/projetIndu/entities/Invoice.java index 855839ac965847dc8f35dd95ab1120655a3f78c6..af8b413d70da5d96259159d0ac97364fb9c76e2d 100644 --- a/src/main/java/com/projet/projetIndu/entities/Invoice.java +++ b/src/main/java/com/projet/projetIndu/entities/Invoice.java @@ -18,14 +18,6 @@ public class Invoice { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne - @JoinColumn(name = "patient_id", nullable = false) - private Patient patient; //clé étrangère vers Patient - - @ManyToOne - @JoinColumn(name = "doctor_id", nullable = false) - private Doctor doctor; //clé étrangère vers Doctor - @Column(nullable = false) private double amount; diff --git a/src/main/java/com/projet/projetIndu/entities/MedicalDocument.java b/src/main/java/com/projet/projetIndu/entities/MedicalDocument.java index 919b9b705942ca9b467e3416690c9101d2e1653e..2dba3ee5677ab45a89dd272e59df0f8cbe0b7e5e 100644 --- a/src/main/java/com/projet/projetIndu/entities/MedicalDocument.java +++ b/src/main/java/com/projet/projetIndu/entities/MedicalDocument.java @@ -20,7 +20,4 @@ public class MedicalDocument { @Column(columnDefinition = "LONGBLOB") private byte[] fileData; - @ManyToOne - @JoinColumn(name = "medical_file_id") - private MedicalFiles medicalFile; } diff --git a/src/main/java/com/projet/projetIndu/entities/MedicalFiles.java b/src/main/java/com/projet/projetIndu/entities/MedicalFiles.java index 00a1415b5134b7b8d592b6263da0c57b69c8e436..ab3cf39b445c5c1aa89ac68c61747e75b7f7c9b3 100644 --- a/src/main/java/com/projet/projetIndu/entities/MedicalFiles.java +++ b/src/main/java/com/projet/projetIndu/entities/MedicalFiles.java @@ -20,27 +20,24 @@ public class MedicalFiles { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne - @JoinColumn(name = "patient_id", nullable = false) - private Patient patient; //clé étrangère vers Patient + private String allergy; + private String treatment; - @ManyToOne - @JoinColumn(name = "doctor_id", nullable = false) - private Doctor doctor; //clé étrangère vers Doctor + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + private List<HealthHistorical> healthHistoricalList = new ArrayList<>(); - @Column(nullable = false, columnDefinition = "TEXT") - private String history; + @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name = "patient_id", nullable = false) + private Patient patient; - @OneToMany(mappedBy = "medicalFile", cascade = CascadeType.ALL, orphanRemoval = true) - private List<MedicalDocument> documents = new ArrayList<>(); + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + private List<MedicalDocument> documentList = new ArrayList<>(); @Column(nullable = false, updatable = false) private LocalDateTime createdAt = LocalDateTime.now(); - public MedicalFiles(Patient patient, Doctor doctor, String history) { + public MedicalFiles(Patient patient) { this.patient = patient; - this.doctor = doctor; - this.history = history; } } diff --git a/src/main/java/com/projet/projetIndu/entities/MedicalRecord.java b/src/main/java/com/projet/projetIndu/entities/MedicalRecord.java deleted file mode 100644 index 9605f4d890bd29dae4b3cb187d8a3b18094326ba..0000000000000000000000000000000000000000 --- a/src/main/java/com/projet/projetIndu/entities/MedicalRecord.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.projet.projetIndu.entities; - -import jakarta.persistence.*; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -import java.time.LocalDateTime; - -@Entity -@Table(name = "medical_records") -@Getter -@Setter -@NoArgsConstructor -class MedicalRecord { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @ManyToOne - @JoinColumn(name = "patient_id", nullable = false) - private Patient patient; - - private String recordType; - private String description; - private LocalDateTime recordDate = LocalDateTime.now(); -} diff --git a/src/main/java/com/projet/projetIndu/entities/Notification.java b/src/main/java/com/projet/projetIndu/entities/Notification.java index 9abd44b341bfb03490198c1d1b38e36dd43e1a95..3076f3a2012911a95de403078a2c3f860c087cb3 100644 --- a/src/main/java/com/projet/projetIndu/entities/Notification.java +++ b/src/main/java/com/projet/projetIndu/entities/Notification.java @@ -18,10 +18,6 @@ public class Notification { @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; - @ManyToOne - @JoinColumn(name = "user_id", nullable = false) - private User user; //clé étrangère vers User - @Column(columnDefinition = "TEXT") private String content; diff --git a/src/main/java/com/projet/projetIndu/entities/Patient.java b/src/main/java/com/projet/projetIndu/entities/Patient.java index 45679c12ea7c54c5a9ae20ca9ed7ee696dec7672..8765aef4161baa280fe13098753b62481d6cbf61 100644 --- a/src/main/java/com/projet/projetIndu/entities/Patient.java +++ b/src/main/java/com/projet/projetIndu/entities/Patient.java @@ -4,6 +4,7 @@ import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.springframework.data.domain.Auditable; import java.time.LocalDate; import java.time.LocalDateTime; @@ -15,47 +16,17 @@ import java.util.List; @Getter @Setter @NoArgsConstructor -public class Patient { - - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @Column(nullable = false) - private String firstName; - - @Column(nullable = false) - private String lastName; +public class Patient extends User { @Column(nullable = false) private LocalDate dateOfBirth; - private String phoneNumber; + public Patient(String firstName, String lastName, String phoneNumber, String email, String address, String username, String password, Role role) { + super(firstName, lastName, phoneNumber, email, address, username, password, role); + this.dateOfBirth = LocalDate.now(); - @Column(unique = true, nullable = false) - private String email; - - private String address; - private String allergy; - private String treatment; - - @Column(nullable = false, updatable = false) - private LocalDateTime createdAt = LocalDateTime.now(); - - @OneToMany(mappedBy = "patient", cascade = CascadeType.ALL) - private List<MedicalRecord> medicalRecords; - - public Patient(/*Long id,*/ String firstName, String lastName, LocalDate dateOfBirth, String phoneNumber, String email, String address, String allergy, String treatment) { - /*this.id = id;*/ - this.firstName = firstName; - this.lastName = lastName; - this.dateOfBirth = dateOfBirth; - this.phoneNumber = phoneNumber; - this.email = email; - this.address = address; - this.allergy = allergy; - this.treatment = treatment; } + } diff --git a/src/main/java/com/projet/projetIndu/entities/Statistic.java b/src/main/java/com/projet/projetIndu/entities/Statistic.java index 8f64f9b94fbda13b8e9d29ef155af67054c38658..2dd50fce1eb2c74b7cffd7163c50e12f9c49e835 100644 --- a/src/main/java/com/projet/projetIndu/entities/Statistic.java +++ b/src/main/java/com/projet/projetIndu/entities/Statistic.java @@ -22,7 +22,7 @@ public class Statistic { @ManyToOne @JoinColumn(name = "doctor_id", nullable = false) - private Doctor doctor; //clé étrangère vers Doctor + private Doctor doctor; @Column(nullable = false) private LocalDate date; diff --git a/src/main/java/com/projet/projetIndu/entities/User.java b/src/main/java/com/projet/projetIndu/entities/User.java index 4446bd8bc5f637483beb328e88b1a133becd9ecf..6d0b0f8cc5d67610431ad2644ea87b71dcd833cc 100644 --- a/src/main/java/com/projet/projetIndu/entities/User.java +++ b/src/main/java/com/projet/projetIndu/entities/User.java @@ -6,17 +6,30 @@ import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; @Entity @Table(name = "users") @Getter @Setter @NoArgsConstructor -public class User { +@Inheritance(strategy = InheritanceType.SINGLE_TABLE) +@DiscriminatorColumn(name = "role", discriminatorType = DiscriminatorType.STRING) +abstract class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; + @Column(nullable = false) + private String firstName; + @Column(nullable = false) + private String lastName; + private String phoneNumber; + @Column(unique = true, nullable = false) + private String email; + private String address; + @Column(nullable = false, unique = true) private String username; @@ -27,18 +40,18 @@ public class User { @Column(nullable = false) private Role role; - @ManyToOne - @JoinColumn(name = "medecin_id") - private Doctor doctor; - - @ManyToOne - @JoinColumn(name = "patient_id") - private Patient patient; + @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) + private List<Notification> notificationList = new ArrayList<>(); @Column(nullable = false, updatable = false) private LocalDateTime createdAt = LocalDateTime.now(); - public User(String username, String password, Role role) { + protected User(String firstName, String lastName, String phoneNumber, String email, String address, String username, String password, Role role) { + this.firstName = firstName; + this.lastName = lastName; + this.phoneNumber = phoneNumber; + this.email = email; + this.address = address; this.username = username; this.password = password; this.role = role;