task/#17 Treatement -> Nurse Relation #36

Merged
SZUT-Dominik merged 4 commits from task/refactor-dao into main 2024-05-15 09:29:52 +00:00
6 changed files with 72 additions and 38 deletions
Showing only changes of commit c6c3e6528a - Show all commits

Binary file not shown.

View file

@ -1,6 +1,7 @@
package de.hitec.nhplus.fixtures; package de.hitec.nhplus.fixtures;
import de.hitec.nhplus.datastorage.ConnectionBuilder; import de.hitec.nhplus.datastorage.ConnectionBuilder;
import de.hitec.nhplus.nurse.Nurse;
import de.hitec.nhplus.patient.Patient; import de.hitec.nhplus.patient.Patient;
import java.sql.Connection; import java.sql.Connection;
@ -28,15 +29,17 @@ public class Fixtures {
patientFixture.setupTable(connection); patientFixture.setupTable(connection);
Map<String, Patient> patientsByName = patientFixture.load(); Map<String, Patient> patientsByName = patientFixture.load();
TreatmentFixture treatmentFixture = new TreatmentFixture(patientsByName); NurseFixture nurseFixture = new NurseFixture();
nurseFixture.dropTable(connection);
nurseFixture.setupTable(connection);
Map<String, Nurse> nursesByName = nurseFixture.load();
TreatmentFixture treatmentFixture = new TreatmentFixture(patientsByName, nursesByName);
treatmentFixture.dropTable(connection); treatmentFixture.dropTable(connection);
treatmentFixture.setupTable(connection); treatmentFixture.setupTable(connection);
treatmentFixture.load(); treatmentFixture.load();
NurseFixture nurseFixture = new NurseFixture();
nurseFixture.dropTable(connection);
nurseFixture.setupTable(connection);
nurseFixture.load();
MedicationFixture medicationFixture = new MedicationFixture(); MedicationFixture medicationFixture = new MedicationFixture();
medicationFixture.dropTable(connection); medicationFixture.dropTable(connection);

View file

@ -2,6 +2,7 @@ package de.hitec.nhplus.fixtures;
import de.hitec.nhplus.Main; import de.hitec.nhplus.Main;
import de.hitec.nhplus.datastorage.DaoFactory; import de.hitec.nhplus.datastorage.DaoFactory;
import de.hitec.nhplus.nurse.Nurse;
import de.hitec.nhplus.patient.Patient; import de.hitec.nhplus.patient.Patient;
import de.hitec.nhplus.treatment.Treatment; import de.hitec.nhplus.treatment.Treatment;
import de.hitec.nhplus.treatment.database.TreatmentDao; import de.hitec.nhplus.treatment.database.TreatmentDao;
@ -17,9 +18,11 @@ import static de.hitec.nhplus.utils.DateConverter.convertStringToLocalTime;
public class TreatmentFixture implements Fixture<Treatment> { public class TreatmentFixture implements Fixture<Treatment> {
private final Map<String, Patient> patientsByName; private final Map<String, Patient> patientsByName;
private final Map<String, Nurse> nursesByName;
public TreatmentFixture(Map<String, Patient> patientsByName) { public TreatmentFixture(Map<String, Patient> patientsByName, Map<String, Nurse> nursesByName) {
this.patientsByName = patientsByName; this.patientsByName = patientsByName;
this.nursesByName = nursesByName;
} }
@Override @Override
@ -45,9 +48,13 @@ public class TreatmentFixture implements Fixture<Treatment> {
Patient ahmet = patientsByName.get("Ahmet"); Patient ahmet = patientsByName.get("Ahmet");
Patient elisabeth = patientsByName.get("Elisabeth"); Patient elisabeth = patientsByName.get("Elisabeth");
Nurse ole = nursesByName.get("Ole");
Nurse armin = nursesByName.get("Armin");
treatments.add(new Treatment( treatments.add(new Treatment(
1, 1,
seppl, seppl,
ole,
convertStringToLocalDate("2023-06-03"), convertStringToLocalDate("2023-06-03"),
convertStringToLocalTime("11:00"), convertStringToLocalTime("11:00"),
convertStringToLocalTime("15:00"), convertStringToLocalTime("15:00"),
@ -59,6 +66,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
2, 2,
seppl, seppl,
armin,
convertStringToLocalDate("2023-06-05"), convertStringToLocalDate("2023-06-05"),
convertStringToLocalTime("11:00"), convertStringToLocalTime("11:00"),
convertStringToLocalTime("12:30"), convertStringToLocalTime("12:30"),
@ -70,6 +78,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
3, 3,
martina, martina,
ole,
convertStringToLocalDate("2023-06-04"), convertStringToLocalDate("2023-06-04"),
convertStringToLocalTime("07:30"), convertStringToLocalTime("07:30"),
convertStringToLocalTime("08:00"), convertStringToLocalTime("08:00"),
@ -79,6 +88,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
4, 4,
seppl, seppl,
armin,
convertStringToLocalDate("2023-06-06"), convertStringToLocalDate("2023-06-06"),
convertStringToLocalTime("15:10"), convertStringToLocalTime("15:10"),
convertStringToLocalTime("16:00"), convertStringToLocalTime("16:00"),
@ -88,6 +98,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
8, 8,
seppl, seppl,
ole,
convertStringToLocalDate("2023-06-08"), convertStringToLocalDate("2023-06-08"),
convertStringToLocalTime("15:00"), convertStringToLocalTime("15:00"),
convertStringToLocalTime("16:00"), convertStringToLocalTime("16:00"),
@ -97,6 +108,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
9, 9,
martina, martina,
armin,
convertStringToLocalDate("2023-06-07"), convertStringToLocalDate("2023-06-07"),
convertStringToLocalTime("11:00"), convertStringToLocalTime("11:00"),
convertStringToLocalTime("11:30"), convertStringToLocalTime("11:30"),
@ -106,6 +118,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
12, 12,
hans, hans,
armin,
convertStringToLocalDate("2023-06-08"), convertStringToLocalDate("2023-06-08"),
convertStringToLocalTime("15:00"), convertStringToLocalTime("15:00"),
convertStringToLocalTime("15:30"), convertStringToLocalTime("15:30"),
@ -115,6 +128,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
14, 14,
ahmet, ahmet,
ole,
convertStringToLocalDate("2023-08-24"), convertStringToLocalDate("2023-08-24"),
convertStringToLocalTime("09:30"), convertStringToLocalTime("09:30"),
convertStringToLocalTime("10:15"), convertStringToLocalTime("10:15"),
@ -123,6 +137,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
16, 16,
elisabeth, elisabeth,
armin,
convertStringToLocalDate("2023-08-31"), convertStringToLocalDate("2023-08-31"),
convertStringToLocalTime("13:30"), convertStringToLocalTime("13:30"),
convertStringToLocalTime("13:45"), convertStringToLocalTime("13:45"),
@ -132,6 +147,7 @@ public class TreatmentFixture implements Fixture<Treatment> {
treatments.add(new Treatment( treatments.add(new Treatment(
17, 17,
elisabeth, elisabeth,
ole,
convertStringToLocalDate("2023-09-01"), convertStringToLocalDate("2023-09-01"),
convertStringToLocalTime("16:00"), convertStringToLocalTime("16:00"),
convertStringToLocalTime("17:00"), convertStringToLocalTime("17:00"),

View file

@ -1,5 +1,6 @@
package de.hitec.nhplus.treatment; package de.hitec.nhplus.treatment;
import de.hitec.nhplus.nurse.Nurse;
import de.hitec.nhplus.patient.Patient; import de.hitec.nhplus.patient.Patient;
import de.hitec.nhplus.utils.DateConverter; import de.hitec.nhplus.utils.DateConverter;
import javafx.beans.property.SimpleIntegerProperty; import javafx.beans.property.SimpleIntegerProperty;
@ -13,16 +14,17 @@ import java.util.StringJoiner;
public class Treatment { public class Treatment {
private SimpleIntegerProperty id; private SimpleIntegerProperty id;
private final SimpleObjectProperty<Patient> patient; private final SimpleObjectProperty<Patient> patient;
private final SimpleObjectProperty<Nurse> nurse;
private final SimpleObjectProperty<LocalDate> date; private final SimpleObjectProperty<LocalDate> date;
private final SimpleObjectProperty<LocalTime> begin; private final SimpleObjectProperty<LocalTime> begin;
private final SimpleObjectProperty<LocalTime> end; private final SimpleObjectProperty<LocalTime> end;
private final SimpleStringProperty description; private final SimpleStringProperty description;
private final SimpleStringProperty remarks; private final SimpleStringProperty remarks;
//TODO: Add Nurse
public Treatment(Patient patient, LocalDate date, LocalTime begin, public Treatment(Patient patient, Nurse nurse, LocalDate date, LocalTime begin,
LocalTime end, String description, String remarks) { LocalTime end, String description, String remarks) {
this.patient = new SimpleObjectProperty<>(patient); this.patient = new SimpleObjectProperty<>(patient);
this.nurse = new SimpleObjectProperty<>(nurse);
this.date = new SimpleObjectProperty<>(date); this.date = new SimpleObjectProperty<>(date);
this.begin = new SimpleObjectProperty<>(begin); this.begin = new SimpleObjectProperty<>(begin);
this.end = new SimpleObjectProperty<>(end); this.end = new SimpleObjectProperty<>(end);
@ -30,10 +32,11 @@ public class Treatment {
this.remarks = new SimpleStringProperty(remarks); this.remarks = new SimpleStringProperty(remarks);
} }
public Treatment(int id, Patient patient, LocalDate date, LocalTime begin, public Treatment(int id, Patient patient, Nurse nurse, LocalDate date, LocalTime begin,
LocalTime end, String description, String remarks) { LocalTime end, String description, String remarks) {
this.id = new SimpleIntegerProperty(id); this.id = new SimpleIntegerProperty(id);
this.patient = new SimpleObjectProperty<>(patient); this.patient = new SimpleObjectProperty<>(patient);
this.nurse = new SimpleObjectProperty<>(nurse);
this.date = new SimpleObjectProperty<>(date); this.date = new SimpleObjectProperty<>(date);
this.begin = new SimpleObjectProperty<>(begin); this.begin = new SimpleObjectProperty<>(begin);
this.end = new SimpleObjectProperty<>(end); this.end = new SimpleObjectProperty<>(end);
@ -49,6 +52,10 @@ public class Treatment {
return patient.getValue(); return patient.getValue();
} }
public Nurse getNurse() {
return nurse.getValue();
}
public String getDate() { public String getDate() {
return date.getValue().toString(); return date.getValue().toString();
} }
@ -89,6 +96,10 @@ public class Treatment {
return patient; return patient;
} }
public SimpleObjectProperty<Nurse> nurseProperty() {
return nurse;
}
public SimpleObjectProperty<LocalDate> dateProperty() { public SimpleObjectProperty<LocalDate> dateProperty() {
return date; return date;
} }
@ -118,6 +129,7 @@ public class Treatment {
.add("TREATMENT") .add("TREATMENT")
.add("ID: " + this.getId()) .add("ID: " + this.getId())
.add("Patient: " + this.getPatient().getSurName() + ", " + this.getPatient().getFirstName()) .add("Patient: " + this.getPatient().getSurName() + ", " + this.getPatient().getFirstName())
.add("Nurse: " + this.getNurse().getSurName() + ", " + this.getNurse().getFirstName())
.add("Date: " + this.getDate()) .add("Date: " + this.getDate())
.add("Begin: " + this.getBegin()) .add("Begin: " + this.getBegin())
.add("End: " + this.getEnd()) .add("End: " + this.getEnd())

View file

@ -2,6 +2,7 @@ package de.hitec.nhplus.treatment.database;
import de.hitec.nhplus.datastorage.DaoFactory; import de.hitec.nhplus.datastorage.DaoFactory;
import de.hitec.nhplus.datastorage.DaoImp; import de.hitec.nhplus.datastorage.DaoImp;
import de.hitec.nhplus.nurse.Nurse;
import de.hitec.nhplus.treatment.Treatment; import de.hitec.nhplus.treatment.Treatment;
import de.hitec.nhplus.utils.DateConverter; import de.hitec.nhplus.utils.DateConverter;
@ -12,7 +13,6 @@ import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
//TODO: Update Methods to use a new Nurse Field (cascade this to any class using this DAO)
public class TreatmentDao extends DaoImp<Treatment> { public class TreatmentDao extends DaoImp<Treatment> {
public TreatmentDao(Connection connection) { public TreatmentDao(Connection connection) {
@ -23,16 +23,17 @@ public class TreatmentDao extends DaoImp<Treatment> {
protected PreparedStatement getCreateStatement(Treatment treatment) throws SQLException { protected PreparedStatement getCreateStatement(Treatment treatment) throws SQLException {
final String SQL = """ final String SQL = """
INSERT INTO treatment INSERT INTO treatment
(patientId, date, begin, end, description, remark) (patientId, nurseId, date, begin, end, description, remark)
VALUES (?, ?, ?, ?, ?, ?) VALUES (?, ?, ?, ?, ?, ?, ?)
"""; """;
PreparedStatement statement = this.connection.prepareStatement(SQL); PreparedStatement statement = this.connection.prepareStatement(SQL);
statement.setInt(1, treatment.getPatient().getId()); statement.setInt(1, treatment.getPatient().getId());
statement.setString(2, treatment.getDate()); statement.setInt(2, treatment.getNurse().getId());
statement.setString(3, treatment.getBegin()); statement.setString(3, treatment.getDate());
statement.setString(4, treatment.getEnd()); statement.setString(4, treatment.getBegin());
statement.setString(5, treatment.getDescription()); statement.setString(5, treatment.getEnd());
statement.setString(6, treatment.getRemarks()); statement.setString(6, treatment.getDescription());
statement.setString(7, treatment.getRemarks());
return statement; return statement;
} }
@ -49,11 +50,12 @@ public class TreatmentDao extends DaoImp<Treatment> {
return new Treatment( return new Treatment(
result.getInt(1), result.getInt(1),
DaoFactory.getInstance().createPatientDAO().read(result.getInt(2)), DaoFactory.getInstance().createPatientDAO().read(result.getInt(2)),
DateConverter.convertStringToLocalDate(result.getString(3)), DaoFactory.getInstance().createNurseDAO().read(result.getInt(3)),
DateConverter.convertStringToLocalTime(result.getString(4)), DateConverter.convertStringToLocalDate(result.getString(4)),
DateConverter.convertStringToLocalTime(result.getString(5)), DateConverter.convertStringToLocalTime(result.getString(5)),
result.getString(6), DateConverter.convertStringToLocalTime(result.getString(6)),
result.getString(7) result.getString(7),
result.getString(8)
); );
} }
@ -72,25 +74,26 @@ public class TreatmentDao extends DaoImp<Treatment> {
return list; return list;
} }
private PreparedStatement getReadAllTreatmentsOfOnePatientByPid(int patientId) throws SQLException { public List<Treatment> readTreatmentsByPatient(int patientId) throws SQLException {
final String SQL = "SELECT * FROM treatment WHERE patientId = ?"; final String SQL = "SELECT * FROM treatment WHERE patientId = ?";
PreparedStatement statement = this.connection.prepareStatement(SQL); PreparedStatement statement = this.connection.prepareStatement(SQL);
statement.setInt(1, patientId); statement.setInt(1, patientId);
return statement; ResultSet result = statement.executeQuery();
}
public List<Treatment> readTreatmentsByPid(int patientId) throws SQLException {
ResultSet result = getReadAllTreatmentsOfOnePatientByPid(patientId).executeQuery();
return getListFromResultSet(result); return getListFromResultSet(result);
} }
//TODO: readTreatmentsByNurse public List<Treatment> readTreatmentsByNurse(int nurseId) throws SQLException {
final String SQL = "SELECT * FROM treatment WHERE nurseId = ?";
PreparedStatement statement = this.connection.prepareStatement(SQL);
statement.setInt(1, nurseId);
ResultSet result = statement.executeQuery();
return getListFromResultSet(result);
}
@Override @Override
protected PreparedStatement getUpdateStatement(Treatment treatment) throws SQLException { protected PreparedStatement getUpdateStatement(Treatment treatment) throws SQLException {
final String SQL = """ final String SQL = """
UPDATE treatment SET UPDATE treatment SET
patientId = ?,
date = ?, date = ?,
begin = ?, begin = ?,
end = ?, end = ?,
@ -99,13 +102,12 @@ public class TreatmentDao extends DaoImp<Treatment> {
WHERE id = ? WHERE id = ?
"""; """;
PreparedStatement statement = this.connection.prepareStatement(SQL); PreparedStatement statement = this.connection.prepareStatement(SQL);
statement.setInt(1, treatment.getPatient().getId()); statement.setString(1, treatment.getDate());
statement.setString(2, treatment.getDate()); statement.setString(2, treatment.getBegin());
statement.setString(3, treatment.getBegin()); statement.setString(3, treatment.getEnd());
statement.setString(4, treatment.getEnd()); statement.setString(4, treatment.getDescription());
statement.setString(5, treatment.getDescription()); statement.setString(5, treatment.getRemarks());
statement.setString(6, treatment.getRemarks()); statement.setInt(6, treatment.getId());
statement.setInt(7, treatment.getId());
return statement; return statement;
} }

View file

@ -2,11 +2,12 @@ CREATE TABLE treatment
( (
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
patientId INTEGER NOT NULL, patientId INTEGER NOT NULL,
nurseId INTEGER NOT NULL ,
date TEXT NOT NULL, date TEXT NOT NULL,
begin TEXT NOT NULL, begin TEXT NOT NULL,
end TEXT NOT NULL, end TEXT NOT NULL,
description TEXT NOT NULL, description TEXT NOT NULL,
remark TEXT NOT NULL, remark TEXT NOT NULL,
FOREIGN KEY (patientId) REFERENCES patient (id) ON DELETE CASCADE FOREIGN KEY (patientId) REFERENCES patient (id) ON DELETE CASCADE,
-- TODO: Add Nurse FOREIGN KEY (nurseId) REFERENCES nurse (id) ON DELETE SET NULL
) )