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
10 changed files with 185 additions and 63 deletions

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

@ -2,6 +2,8 @@ package de.hitec.nhplus.treatment;
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.nurse.database.NurseDao;
import de.hitec.nhplus.patient.Patient; import de.hitec.nhplus.patient.Patient;
import de.hitec.nhplus.patient.database.PatientDao; import de.hitec.nhplus.patient.database.PatientDao;
import de.hitec.nhplus.treatment.database.TreatmentDao; import de.hitec.nhplus.treatment.database.TreatmentDao;
@ -31,6 +33,9 @@ public class AllTreatmentController {
@FXML @FXML
private TableColumn<Treatment, String> columnPatientName; private TableColumn<Treatment, String> columnPatientName;
@FXML
private TableColumn<Treatment, String> columnNurseName;
@FXML @FXML
private TableColumn<Treatment, String> columnDate; private TableColumn<Treatment, String> columnDate;
@ -46,6 +51,9 @@ public class AllTreatmentController {
@FXML @FXML
private ComboBox<String> comboBoxPatientSelection; private ComboBox<String> comboBoxPatientSelection;
@FXML
public ComboBox<String> comboBoxNurseSelection;
@FXML @FXML
private Button buttonDelete; private Button buttonDelete;
@ -53,19 +61,29 @@ public class AllTreatmentController {
private TreatmentDao dao; private TreatmentDao dao;
private final ObservableList<String> patientSelection = FXCollections.observableArrayList(); private final ObservableList<String> patientSelection = FXCollections.observableArrayList();
private ArrayList<Patient> patientList; private ArrayList<Patient> patientList;
private final ObservableList<String> nurseSelection = FXCollections.observableArrayList();
private ArrayList<Nurse> nurseList;
public void initialize() { public void initialize() {
readAllAndShowInTableView(); readAllAndShowInTableView();
comboBoxPatientSelection.setItems(patientSelection); comboBoxPatientSelection.setItems(patientSelection);
comboBoxPatientSelection.getSelectionModel().select(0); comboBoxPatientSelection.getSelectionModel().select("alle");
comboBoxNurseSelection.setItems(nurseSelection);
this.columnId.setCellValueFactory(new PropertyValueFactory<>("id")); this.columnId.setCellValueFactory(new PropertyValueFactory<>("id"));
this.columnPatientName.setCellValueFactory( this.columnPatientName.setCellValueFactory(
cellData -> { cellData -> {
Patient patient = cellData.getValue().getPatient(); Patient patient = cellData.getValue().getPatient();
return new SimpleStringProperty(patient.getSurName() + ", " + patient.getFirstName()); return new SimpleStringProperty(patient.getSurName() + ", " + patient.getFirstName());
} }
); );
this.columnNurseName.setCellValueFactory(
cellData -> {
Nurse nurse = cellData.getValue().getNurse();
return new SimpleStringProperty(nurse.getSurName() + ", " + nurse.getFirstName());
}
);
this.columnDate.setCellValueFactory(new PropertyValueFactory<>("date")); this.columnDate.setCellValueFactory(new PropertyValueFactory<>("date"));
this.columnBegin.setCellValueFactory(new PropertyValueFactory<>("begin")); this.columnBegin.setCellValueFactory(new PropertyValueFactory<>("begin"));
this.columnEnd.setCellValueFactory(new PropertyValueFactory<>("end")); this.columnEnd.setCellValueFactory(new PropertyValueFactory<>("end"));
@ -84,7 +102,6 @@ public class AllTreatmentController {
} }
public void readAllAndShowInTableView() { public void readAllAndShowInTableView() {
comboBoxPatientSelection.getSelectionModel().select(0);
this.dao = DaoFactory.getInstance().createTreatmentDao(); this.dao = DaoFactory.getInstance().createTreatmentDao();
try { try {
this.treatments.setAll(dao.readAll()); this.treatments.setAll(dao.readAll());
@ -94,13 +111,19 @@ public class AllTreatmentController {
} }
private void createComboBoxData() { private void createComboBoxData() {
PatientDao dao = DaoFactory.getInstance().createPatientDAO(); PatientDao patientDAO = DaoFactory.getInstance().createPatientDAO();
NurseDao nurseDao = DaoFactory.getInstance().createNurseDAO();
try { try {
patientList = (ArrayList<Patient>) dao.readAll(); patientList = (ArrayList<Patient>) patientDAO.readAll();
this.patientSelection.add("alle"); this.patientSelection.add("alle");
for (Patient patient : patientList) { for (Patient patient : patientList) {
this.patientSelection.add(patient.getSurName()); this.patientSelection.add(patient.getSurName());
} }
nurseList = (ArrayList<Nurse>) nurseDao.readAll();
for (Nurse nurse : nurseList) {
this.nurseSelection.add(nurse.getSurName());
}
} catch (SQLException exception) { } catch (SQLException exception) {
exception.printStackTrace(); exception.printStackTrace();
} }
@ -108,7 +131,7 @@ public class AllTreatmentController {
@FXML @FXML
public void handleComboBox() { public void handleComboBoxPatient() {
String selectedPatient = this.comboBoxPatientSelection.getSelectionModel().getSelectedItem(); String selectedPatient = this.comboBoxPatientSelection.getSelectionModel().getSelectedItem();
this.treatments.clear(); this.treatments.clear();
this.dao = DaoFactory.getInstance().createTreatmentDao(); this.dao = DaoFactory.getInstance().createTreatmentDao();
@ -121,17 +144,17 @@ public class AllTreatmentController {
} }
} }
Patient patient = searchInList(selectedPatient); Patient patient = searchInPatientList(selectedPatient);
if (patient != null) { if (patient != null) {
try { try {
this.treatments.setAll(this.dao.readTreatmentsByPid(patient.getId())); this.treatments.setAll(this.dao.readTreatmentsByPatient(patient.getId()));
} catch (SQLException exception) { } catch (SQLException exception) {
exception.printStackTrace(); exception.printStackTrace();
} }
} }
} }
private Patient searchInList(String surname) { private Patient searchInPatientList(String surname) {
for (Patient patient : this.patientList) { for (Patient patient : this.patientList) {
if (patient.getSurName().equals(surname)) { if (patient.getSurName().equals(surname)) {
return patient; return patient;
@ -140,6 +163,15 @@ public class AllTreatmentController {
return null; return null;
} }
private Nurse searchInNurseList(String surname) {
for (Nurse nurse : this.nurseList) {
if (nurse.getSurName().equals(surname)) {
return nurse;
}
}
return null;
}
@FXML @FXML
public void handleDelete() { public void handleDelete() {
int index = this.tableView.getSelectionModel().getSelectedIndex(); int index = this.tableView.getSelectionModel().getSelectedIndex();
@ -154,32 +186,47 @@ public class AllTreatmentController {
@FXML @FXML
public void handleNewTreatment() { public void handleNewTreatment() {
try { String selectedPatient = this.comboBoxPatientSelection.getSelectionModel().getSelectedItem();
String selectedPatient = this.comboBoxPatientSelection.getSelectionModel().getSelectedItem(); Patient patient = searchInPatientList(selectedPatient);
Patient patient = searchInList(selectedPatient);
newTreatmentWindow(patient); if(patient == null) {
} catch (NullPointerException exception) {
Alert alert = new Alert(Alert.AlertType.INFORMATION); Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Information"); alert.setTitle("Information");
alert.setHeaderText("Patient für die Behandlung fehlt!"); alert.setHeaderText("Patient für die Behandlung fehlt!");
alert.setContentText("Wählen Sie über die Combobox einen Patienten aus!"); alert.setContentText("Wählen Sie über die Combobox einen Patienten aus!");
alert.showAndWait(); alert.showAndWait();
return;
} }
String selectedNurse = this.comboBoxNurseSelection.getSelectionModel().getSelectedItem();
Nurse nurse = searchInNurseList(selectedNurse);
if(nurse == null) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Information");
alert.setHeaderText("Pfleger für die Behandlung fehlt!");
alert.setContentText("Wählen Sie über die Combobox einen Pfleger aus!");
alert.showAndWait();
return;
}
newTreatmentWindow(patient, nurse);
} }
@FXML @FXML
public void handleMouseClick() { public void handleMouseClick() {
tableView.setOnMouseClicked(event -> tableView.setOnMouseClicked(event ->
{ {
if (event.getClickCount() == 2 && (tableView.getSelectionModel().getSelectedItem() != null)) { if (event.getClickCount() != 2 || (tableView.getSelectionModel().getSelectedItem() == null)) {
int index = this.tableView.getSelectionModel().getSelectedIndex(); return;
Treatment treatment = this.treatments.get(index);
treatmentWindow(treatment);
} }
int index = this.tableView.getSelectionModel().getSelectedIndex();
Treatment treatment = this.treatments.get(index);
treatmentWindow(treatment, treatment.getNurse());
}); });
} }
public void newTreatmentWindow(Patient patient) { public void newTreatmentWindow(Patient patient, Nurse nurse) {
try { try {
FXMLLoader loader = new FXMLLoader( FXMLLoader loader = new FXMLLoader(
Main.class.getResource("/de/hitec/nhplus/treatment/TreatmentModal.fxml") Main.class.getResource("/de/hitec/nhplus/treatment/TreatmentModal.fxml")
@ -193,7 +240,8 @@ public class AllTreatmentController {
this, this,
stage, stage,
null, null,
patient patient,
nurse
); );
stage.setScene(scene); stage.setScene(scene);
@ -206,7 +254,7 @@ public class AllTreatmentController {
} }
} }
public void treatmentWindow(Treatment treatment) { public void treatmentWindow(Treatment treatment, Nurse nurse) {
try { try {
FXMLLoader loader = new FXMLLoader( FXMLLoader loader = new FXMLLoader(
Main.class.getResource("/de/hitec/nhplus/treatment/TreatmentModal.fxml") Main.class.getResource("/de/hitec/nhplus/treatment/TreatmentModal.fxml")
@ -221,7 +269,8 @@ public class AllTreatmentController {
this, this,
stage, stage,
treatment, treatment,
pDao.read(treatment.getPatient().getId()) pDao.read(treatment.getPatient().getId()),
nurse
); );
stage.setScene(scene); stage.setScene(scene);

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,15 +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;
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);
@ -29,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);
@ -48,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();
} }
@ -88,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;
} }
@ -117,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

@ -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.value.ChangeListener; import javafx.beans.value.ChangeListener;
@ -14,6 +15,8 @@ import java.time.LocalTime;
import static de.hitec.nhplus.utils.Validator.*; import static de.hitec.nhplus.utils.Validator.*;
public class TreatmentModalController { public class TreatmentModalController {
@FXML
private Label labelNurseName;
@FXML @FXML
private Label labelFirstName; private Label labelFirstName;
@FXML @FXML
@ -33,18 +36,27 @@ public class TreatmentModalController {
private AllTreatmentController controller; private AllTreatmentController controller;
private Stage stage; private Stage stage;
private Patient patient; private Patient patient;
private Nurse nurse;
private Treatment treatment; private Treatment treatment;
private boolean isNewTreatment = false; private boolean isNewTreatment = false;
public void initialize(AllTreatmentController controller, Stage stage, Treatment treatment, Patient patient) { public void initialize(
AllTreatmentController controller,
Stage stage,
Treatment treatment,
Patient patient,
Nurse nurse
) {
this.controller = controller; this.controller = controller;
this.stage = stage; this.stage = stage;
this.patient = patient; this.patient = patient;
this.nurse = nurse;
if (treatment == null) { if (treatment == null) {
isNewTreatment = true; isNewTreatment = true;
LocalTime currentTime = LocalTime.now(); LocalTime currentTime = LocalTime.now();
this.treatment = new Treatment( this.treatment = new Treatment(
patient, patient,
nurse,
LocalDate.now(), LocalDate.now(),
LocalTime.of(currentTime.getHour(), currentTime.getMinute()), LocalTime.of(currentTime.getHour(), currentTime.getMinute()),
LocalTime.of(currentTime.getHour(), currentTime.getMinute()), LocalTime.of(currentTime.getHour(), currentTime.getMinute()),
@ -60,16 +72,16 @@ public class TreatmentModalController {
ChangeListener<String> inputNewTreatmentTextValidationListener = (observableValue, oldText, newText) -> ChangeListener<String> inputNewTreatmentTextValidationListener = (observableValue, oldText, newText) ->
{ {
boolean isValid = isValidDate(this.datePicker.getValue()) boolean isValid = isValidDate(this.datePicker.getValue())
&& isValidTimeRange(this.textFieldBegin.getText(), this.textFieldEnd.getText()) && isValidTimeRange(this.textFieldBegin.getText(), this.textFieldEnd.getText())
&& isValidDescription(this.textFieldDescription.getText()); && isValidDescription(this.textFieldDescription.getText());
this.buttonSave.setDisable(!isValid); this.buttonSave.setDisable(!isValid);
}; };
ChangeListener<LocalDate> inputNewTreatmentDateValidationListener = (observableValue, localDate, t1) -> ChangeListener<LocalDate> inputNewTreatmentDateValidationListener = (observableValue, localDate, t1) ->
{ {
boolean isValid = isValidDate(this.datePicker.getValue()) boolean isValid = isValidDate(this.datePicker.getValue())
&& isValidTimeRange(this.textFieldBegin.getText(), this.textFieldEnd.getText()) && isValidTimeRange(this.textFieldBegin.getText(), this.textFieldEnd.getText())
&& isValidDescription(this.textFieldDescription.getText()); && isValidDescription(this.textFieldDescription.getText());
this.buttonSave.setDisable(!isValid); this.buttonSave.setDisable(!isValid);
}; };
@ -98,6 +110,7 @@ public class TreatmentModalController {
} }
private void showData() { private void showData() {
this.labelNurseName.setText(nurse.getSurName());
this.labelFirstName.setText(patient.getFirstName()); this.labelFirstName.setText(patient.getFirstName());
this.labelSurName.setText(patient.getSurName()); this.labelSurName.setText(patient.getSurName());
LocalDate date = DateConverter.convertStringToLocalDate(treatment.getDate()); LocalDate date = DateConverter.convertStringToLocalDate(treatment.getDate());

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;
@ -22,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;
} }
@ -48,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)
); );
} }
@ -71,15 +74,19 @@ 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();
return getListFromResultSet(result);
} }
public List<Treatment> readTreatmentsByPid(int patientId) throws SQLException { public List<Treatment> readTreatmentsByNurse(int nurseId) throws SQLException {
ResultSet result = getReadAllTreatmentsOfOnePatientByPid(patientId).executeQuery(); 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); return getListFromResultSet(result);
} }
@ -87,7 +94,6 @@ public class TreatmentDao extends DaoImp<Treatment> {
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 = ?,
@ -96,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

@ -28,6 +28,11 @@
minWidth="80.0" minWidth="80.0"
text="Patient" text="Patient"
/> />
<TableColumn
fx:id="columnNurseName"
minWidth="80.0"
text="Pflegekraft"
/>
<TableColumn <TableColumn
fx:id="columnDate" fx:id="columnDate"
maxWidth="-1.0" maxWidth="-1.0"
@ -66,7 +71,11 @@
<ComboBox <ComboBox
fx:id="comboBoxPatientSelection" fx:id="comboBoxPatientSelection"
prefWidth="200.0" prefWidth="200.0"
onAction="#handleComboBox" onAction="#handleComboBoxPatient"
/>
<ComboBox
fx:id="comboBoxNurseSelection"
prefWidth="200.0"
/> />
<Button <Button
mnemonicParsing="false" mnemonicParsing="false"

View file

@ -30,21 +30,33 @@
<Label <Label
GridPane.rowIndex="0" GridPane.rowIndex="0"
GridPane.columnIndex="0" GridPane.columnIndex="0"
text="Vorname:" text="Pfleger:"
/> />
<Label <Label
GridPane.rowIndex="0" GridPane.rowIndex="0"
GridPane.columnIndex="1" GridPane.columnIndex="1"
prefWidth="200" prefWidth="200"
fx:id="labelNurseName" text="Pfleger Name"
/>
<!-- Row 1 -->
<Label
GridPane.rowIndex="1"
GridPane.columnIndex="0"
text="Vorname:"
/>
<Label
GridPane.rowIndex="1"
GridPane.columnIndex="1"
prefWidth="200"
fx:id="labelFirstName" text="Vorname" fx:id="labelFirstName" text="Vorname"
/> />
<Label <Label
GridPane.rowIndex="0" GridPane.rowIndex="1"
GridPane.columnIndex="3" GridPane.columnIndex="3"
text="Nachname:" text="Nachname:"
/> />
<Label <Label
GridPane.rowIndex="0" GridPane.rowIndex="1"
GridPane.columnIndex="4" GridPane.columnIndex="4"
prefWidth="200" prefWidth="200"
fx:id="labelSurName" fx:id="labelSurName"

View file

@ -2,10 +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,
FOREIGN KEY (nurseId) REFERENCES nurse (id) ON DELETE SET NULL
) )