diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java index 1dbf9ac..7452d92 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java @@ -7,6 +7,7 @@ package de.uniluebeck.mi.projmi6.controller; import de.uniluebeck.mi.projmi6.db.DBHandler; import de.uniluebeck.mi.projmi6.model.*; import de.uniluebeck.mi.projmi6.view.DateTimePicker; +import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.event.ActionEvent; @@ -93,6 +94,16 @@ public class FallController { CREATE, EDIT, VIEW } + public State getState() { + return state.get(); + } + + public ReadOnlyObjectProperty stateProperty() { + return state; + } + + + SimpleObjectProperty state = new SimpleObjectProperty<>(State.VIEW); @@ -102,19 +113,8 @@ public class FallController { fallFallart.setItems(FXCollections.observableArrayList(FallArt.values())); fallKasse.setItems(mainController.getStammdaten().getKassen()); - btnFallEnableEdit.visibleProperty().bind( - state.isEqualTo(State.VIEW).and(fallProperty.isNotNull()) - ); - btnFallAbort.visibleProperty().bind( - state.isNotEqualTo(State.VIEW) - ); - btnFallSave.visibleProperty().bind( - state.isNotEqualTo(State.VIEW) - ); - btnFallCancel.visibleProperty().bind( - state.isEqualTo(State.VIEW).and(fallProperty.isNotNull()) - ); + initButtons(); fallFields.disableProperty().bind(state.isEqualTo(State.VIEW)); @@ -123,8 +123,40 @@ public class FallController { copyFallDataIntoField(fallProperty.get()); } })); + + + state.addListener((observable, oldValue, newValue) -> { + if(newValue==State.EDIT || newValue == State.CREATE){ + mainController.lockForEdit(MainController.TabName.OVERVIEW); + }else{ + mainController.unlockFromEdit(); + } + }); } + /** + * Hide the buttons depending on controller state. + */ + private void initButtons(){ + btnFallEnableEdit.managedProperty().bind( + state.isEqualTo(State.VIEW).and(fallProperty.isNotNull()) + ); + btnFallEnableEdit.visibleProperty().bind(btnFallEnableEdit.managedProperty()); + btnFallAbort.managedProperty().bind( + state.isNotEqualTo(State.VIEW) + ); + btnFallAbort.visibleProperty().bind(btnFallAbort.managedProperty()); + + btnFallSave.managedProperty().bind( + state.isNotEqualTo(State.VIEW) + ); + btnFallSave.visibleProperty().bind(btnFallSave.managedProperty()); + + btnFallCancel.managedProperty().bind( + state.isEqualTo(State.VIEW).and(fallProperty.isNotNull()) + ); + btnFallCancel.visibleProperty().bind(btnFallCancel.managedProperty()); + } public void editFall(){ @@ -139,15 +171,13 @@ public class FallController { @FXML void clickedFallCancel(ActionEvent event) { - this.state.set(State.VIEW); - copyFallDataIntoField(fallProperty.get()); + //Fall Stornieren... } @FXML void clickedFallAbort(ActionEvent event) { this.state.set(State.VIEW); copyFallDataIntoField(fallProperty.get()); - mainController.fallCreationComplete(); } @FXML @@ -157,21 +187,20 @@ public class FallController { copyFieldDataIntoFall(fall); try { DBHandler.setFall(fall, mainController.getCurrentMitarbeiter().getMitarbID()); - //TODO Reload Faelle for Patient im MainController } catch (SQLException e) { e.printStackTrace(); } } else { try { DBHandler.setFall(fallProperty.get(), mainController.getCurrentMitarbeiter().getMitarbID(), true); + } catch (SQLException e) { e.printStackTrace(); } } - mainController.fallCreationComplete(); this.state.set(State.VIEW); - //TODO Update/create in db + mainController.refreshCasesFromDb(mainController.getPatientTablesController().getSelectedPatient()); } public void createNewFall() { @@ -188,10 +217,6 @@ public class FallController { } } fallVersichertennummer.setText(patient.getVersichertennummer()); - - // TODO: Jojo: Kannst Du das wieder heile machen? :D - // fallProperty.unbind(); - // fallProperty.set(new Fall()); } @@ -208,10 +233,10 @@ public class FallController { fallPatID.setText(""); //TODO - fallCreateTime.setText(""); - fallCreator.setText(""); - fallEditTime.setText(""); - fallEditor.setText(""); + fallCreateTime.setText(""); + fallCreator.setText(""); + fallEditTime.setText(""); + fallEditor.setText(""); fallEinweisenderArzt.setText(""); fallSelbsteinweisung.setSelected(false); @@ -234,7 +259,7 @@ public class FallController { fall.setSelbsteinweisung(true); fall.setEinweisenderArzt(null); }else{ - // fall.setEinweisenderArzt(fallEinweisenderArzt.getText()); TODO + //fall.setEinweisenderArzt(fallEinweisenderArzt.getText()); TODO fall.setSelbsteinweisung(false); } fall.setVersichertenNummer(fallVersichertennummer.getText()); diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java index 1f9332a..8a715b7 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java @@ -29,9 +29,6 @@ public class MainController { private UntersuchungenController untersuchungenController; - - - private int parallelTaskCount = 0; @FXML @@ -53,35 +50,35 @@ public class MainController { private TabPane tabPaneFall; @FXML - private Tab tabFallOverview, tabFallUntersuchungen, tabFallDiagnose, tabFallStationsHistorie ; + private Tab tabFallOverview, tabFallUntersuchungen, tabFallDiagnose, tabFallStationsHistorie; private Stammdaten stammdaten = new Stammdaten(); private Callback, Object> controllerFactory = clazz -> { - if(clazz.equals(MainController.class)) { + if (clazz.equals(MainController.class)) { return this; - }else if(clazz.equals(FallController.class)){ + } else if (clazz.equals(FallController.class)) { return fallController; - }else if(clazz.equals(DiagnoseController.class)){ + } else if (clazz.equals(DiagnoseController.class)) { return diagnoseController; - }else if(clazz.equals(PatientTablesController.class)){ + } else if (clazz.equals(PatientTablesController.class)) { return patientTablesController; - }else if(clazz.equals(SettingsController.class)){ - return settingsController; - } else if(clazz.equals(UntersuchungenController.class)) { + } else if (clazz.equals(SettingsController.class)) { + return settingsController; + } else if (clazz.equals(UntersuchungenController.class)) { return untersuchungenController; - }else if(clazz.equals(StationsHistorieController.class)){ + } else if (clazz.equals(StationsHistorieController.class)) { return stationsHistorieController; - }else { - System.err.println("Keine Controller-Klasse des Typs "+clazz+" gefunden!!!"); + } else { + System.err.println("Keine Controller-Klasse des Typs " + clazz + " gefunden!!!"); return null; } }; - public MainController(){ + public MainController() { fallController = new FallController(this); diagnoseController = new DiagnoseController(this); patientTablesController = new PatientTablesController(this); @@ -91,47 +88,45 @@ public class MainController { } - public Stammdaten getStammdaten(){ - return stammdaten; + public Stammdaten getStammdaten() { + return stammdaten; } - public Callback, Object> getControllerFactory(){ + public Callback, Object> getControllerFactory() { return controllerFactory; } - - - public FallController getFallController(){ + public FallController getFallController() { return fallController; } - public DiagnoseController getDiagnoseController(){ + public DiagnoseController getDiagnoseController() { return diagnoseController; } - public PatientTablesController getPatientTablesController(){ - return patientTablesController; + public PatientTablesController getPatientTablesController() { + return patientTablesController; } - public SettingsController getSettingsController(){ + public SettingsController getSettingsController() { return settingsController; } - public UntersuchungenController getUntersuchungenController(){ - return untersuchungenController; + public UntersuchungenController getUntersuchungenController() { + return untersuchungenController; } - public void increaseParallelTaskCount(){ + public void increaseParallelTaskCount() { parallelTaskCount++; - if(parallelTaskCount>0 && progressIndicator!=null){ + if (parallelTaskCount > 0 && progressIndicator != null) { progressIndicator.setVisible(true); } } - public void decreaseParallelTaskCount(){ + public void decreaseParallelTaskCount() { parallelTaskCount--; - if(parallelTaskCount<=0 && progressIndicator!=null){ + if (parallelTaskCount <= 0 && progressIndicator != null) { parallelTaskCount = 0; progressIndicator.setVisible(false); } @@ -142,36 +137,32 @@ public class MainController { private Label lvFallPlaceholder; - private Task> loadFallTask = null; - - private ChangeListener onPatientChanged = (observableValue,oldValue,newValue)-> { + public void refreshCasesFromDb(Patient patient) { lvFall.setItems(null); //clear list - if(newValue==null){ // If no patient is selected + if (patient == null) { // If no patient is selected lvFallPlaceholder.setText("Kein Patient ausgew\u00e4hlt!"); return; } - if(loadFallTask!=null && loadFallTask.isRunning()){ + if (loadFallTask != null && loadFallTask.isRunning()) { loadFallTask.cancel(); } - loadFallTask = new Task>() { @Override protected List call() throws Exception { - return DBHandler.getFaelleByPatID(newValue.getPatID()); + return DBHandler.getFaelleByPatID(patient.getPatID()); } @Override protected void succeeded() { super.succeeded(); - if(isCancelled()){ - System.out.println("Task wurde gecancelt"); + if (isCancelled()) { return; } lvFallPlaceholder.setText("Keine F\u00e4lle vorhanden!"); @@ -199,20 +190,24 @@ public class MainController { Thread thread = new Thread(loadFallTask); thread.setDaemon(true); thread.start(); - }; + } + @FXML - private void initialize(){ + private void initialize() { //Init user data. cmbUserChoose.itemsProperty().bind(this.getStammdaten().mitarbeiterProperty()); cmbUserChoose.getSelectionModel().select(0); // TODO: Bessere Loesung finden. //Disable the right side if no case is selected. - fallOverview.disableProperty().bind(patientTablesController.selectedPatientProperty().isNull()); + fallOverview.disableProperty().bind(patientTablesController.selectedPatientProperty().isNull() + .and(fallController.stateProperty().isNotEqualTo(FallController.State.CREATE))); //Load the cases async if patient changes - patientTablesController.selectedPatientProperty().addListener(onPatientChanged); + patientTablesController.selectedPatientProperty().addListener((observableValue, oldValue, newValue) -> { + refreshCasesFromDb(newValue); + }); lvFall.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); @@ -220,19 +215,19 @@ public class MainController { fallController.fallPropertyProperty().bind(lvFall.getSelectionModel().selectedItemProperty()); - - - lvFall.getSelectionModel().selectedItemProperty().addListener(onCaseChanged); + lvFall.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) ->{ + refreshCaseData(newValue); + }); } - private Task loadCaseData = null; - private ChangeListener onCaseChanged = (observable, oldValue, newValue) -> { - if(loadCaseData!=null && loadCaseData.isRunning()){ + + private void refreshCaseData(Fall fall){ + if (loadCaseData != null && loadCaseData.isRunning()) { loadCaseData.cancel(); } @@ -241,42 +236,43 @@ public class MainController { tabFallStationsHistorie.setDisable(true); tabFallUntersuchungen.setDisable(true); - if(newValue==null) { + if (fall == null) { tabPaneFall.setDisable(true); System.out.println("TODO: Clear tables cuz fall = null!"); //fallController.c return; } - if(newValue==null){ // If no patient is selected + if (fall == null) { // If no patient is selected //lvFallPlaceholder.setText("Kein Patient ausgew\u00e4hlt!"); return; } - - loadCaseData = new Task() { List untersuchungList; List diagnoseList; List stationsHistorieList; + @Override protected Void call() throws Exception { - untersuchungList = DBHandler.getUntersuchungByFall(newValue); - diagnoseList = DBHandler.getDiagnosenByFall(newValue); - //stationsHistorieList = + untersuchungList = DBHandler.getUntersuchungByFall(fall); + diagnoseList = DBHandler.getDiagnosenByFall(fall); + stationsHistorieList = DBHandler.getStationsHistorieByFall(fall); return null; } @Override protected void succeeded() { super.succeeded(); - if(isCancelled()){ + if (isCancelled()) { System.out.println("Task wurde gecancelt"); return; } untersuchungenController.setUntersuchungen(FXCollections.observableArrayList(untersuchungList)); diagnoseController.setDiagnosen(FXCollections.observableArrayList(diagnoseList)); + stationsHistorieController.setStationsHistorie(FXCollections.observableArrayList(stationsHistorieList)); + tabPaneFall.setDisable(false); tabFallDiagnose.setDisable(false); @@ -304,33 +300,81 @@ public class MainController { thread.setDaemon(true); thread.start(); increaseParallelTaskCount(); - }; + } + + public void refreshCaseData(){ + refreshCaseData(lvFall.getSelectionModel().getSelectedItem()); + } @FXML - private void clickedCreateFall(){ + private void clickedCreateFall() { +// tabFallDiagnose.setDisable(true); +// tabFallUntersuchungen.setDisable(true); +// tabFallStationsHistorie.setDisable(true); +// tabPaneFall.getSelectionModel().select(tabFallOverview); +// patientTablesController.getPatientOverviewTabPane().setDisable(true); +// +// + fallController.createNewFall(); + lockForEdit(TabName.OVERVIEW); + } + + + public Fall getFall(){ + return lvFall.getSelectionModel().getSelectedItem(); + } + +public enum TabName { + OVERVIEW, DIAGNOSE, UNTERSUCHUNG, STATIONSHISTORIE; +} + + public void lockForEdit(TabName exclude) { tabFallDiagnose.setDisable(true); tabFallUntersuchungen.setDisable(true); tabFallStationsHistorie.setDisable(true); - tabPaneFall.getSelectionModel().select(tabFallOverview); + tabFallOverview.setDisable(true); + lvFall.setDisable(true); + btnFallCreate.setDisable(true); + patientTablesController.getPatientOverviewTabPane().setDisable(true); + switch (exclude) { + case OVERVIEW: + tabFallOverview.setDisable(false); + break; + case DIAGNOSE: + tabFallDiagnose.setDisable(false); + break; + case UNTERSUCHUNG: + tabFallUntersuchungen.setDisable(false); + break; + case STATIONSHISTORIE: + tabFallStationsHistorie.setDisable(false); + default: + break; + } + - fallController.createNewFall(); } - public void fallCreationComplete(){ + public void unlockFromEdit() { tabFallDiagnose.setDisable(false); tabFallUntersuchungen.setDisable(false); tabFallStationsHistorie.setDisable(false); + + tabFallOverview.setDisable(false); patientTablesController.getPatientOverviewTabPane().setDisable(false); + lvFall.setDisable(false); + btnFallCreate.setDisable(false); + } - public Mitarbeiter getCurrentMitarbeiter(){ + public Mitarbeiter getCurrentMitarbeiter() { return cmbUserChoose.getValue(); } - public ReadOnlyObjectProperty currentMitarbeiterProperty(){ + public ReadOnlyObjectProperty currentMitarbeiterProperty() { return cmbUserChoose.valueProperty(); } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/OurReceiverApplication.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/OurReceiverApplication.java new file mode 100644 index 0000000..a2f475f --- /dev/null +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/OurReceiverApplication.java @@ -0,0 +1,47 @@ +package de.uniluebeck.mi.projmi6.controller; + +/** + * Created by 630030 on 19.11.15. + */ + + + import java.io.IOException; + import java.util.Map; + + import ca.uhn.hl7v2.DefaultHapiContext; + import ca.uhn.hl7v2.HL7Exception; + import ca.uhn.hl7v2.model.Message; + import ca.uhn.hl7v2.protocol.ReceivingApplication; + import ca.uhn.hl7v2.protocol.ReceivingApplicationException; + + /** + * Application class for receiving ADT^A01 messages + */ + public class OurReceiverApplication implements ReceivingApplication + { + + /** + * {@inheritDoc} + */ + public boolean canProcess(Message theIn) { + return true; + } + + + /** + * {@inheritDoc} + */ + public Message processMessage(Message message, Map theMetadata) throws ReceivingApplicationException, HL7Exception { + + String encodedMessage = new DefaultHapiContext().getPipeParser().encode(message); + System.out.println("Received message:\n" + encodedMessage + "\n\n"); + // Now generate a simple acknowledgment message and return it + try { + return message.generateACK(); + } catch (IOException e) { + throw new HL7Exception(e); + } + + } + + } \ No newline at end of file diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java index d842fee..cc683d9 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java @@ -3,19 +3,16 @@ package de.uniluebeck.mi.projmi6.controller; /** * Created by Johannes on 12.11.15. */ -import ca.uhn.hl7v2.model.v251.segment.LOC; -import com.sun.org.apache.bcel.internal.generic.LoadClass; + import de.uniluebeck.mi.projmi6.db.DBHandler; import de.uniluebeck.mi.projmi6.model.Patient; import de.uniluebeck.mi.projmi6.model.Station; import de.uniluebeck.mi.projmi6.model.StationsUebersichtsItem; import javafx.beans.binding.Bindings; import javafx.beans.binding.ObjectBinding; -import javafx.beans.property.ObjectProperty; -import javafx.beans.property.ReadOnlyObjectProperty; -import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; @@ -28,112 +25,86 @@ import javafx.stage.Modality; import javafx.stage.Stage; import java.io.IOException; -import java.rmi.server.ExportException; -import java.sql.SQLException; import java.time.LocalDate; -import java.time.LocalDateTime; import java.util.List; /** * Controller class. */ -public class PatientTablesController{ +public class PatientTablesController { + @FXML + Button btnStatRefresh; private MainController mainController; - @FXML private Label lblTablePatientEmpty; - @FXML private Label lblTableStationEmpty; - @FXML private Button btnPatCreate; - @FXML private Button btnPatEdit; - @FXML private TableView tblPatientOverview; - @FXML private TableColumn colPatPatId; - @FXML private TableColumn colPatGeburtsname; - @FXML private TableColumn colPatNachname; - @FXML private TableColumn colPatVorname; - @FXML private TableColumn colPatGebDatum; - @FXML private TableColumn colPatStrasse; - @FXML private TableColumn colPatPlz; - @FXML private TableColumn colPatOrt; - @FXML private TableColumn colPatCave; - - - - @FXML private ToggleButton btnEntlassenePatientenZeigen; - @FXML private ComboBox cmbStationenFilter; - @FXML private TableView tblStationOverview; - @FXML private TableColumn colStatPatId; - @FXML private TableColumn colStatFullName; - @FXML private TableColumn colStatGebDatum; - @FXML private TableColumn colStatAlter; - @FXML private TableColumn colStatAufnahmedatum; - @FXML private TableColumn colStatEntlassungsdatum; - @FXML private Tab stationOverviewTab; - - public TabPane getPatientOverviewTabPane() { - return patientOverviewTabPane; - } - @FXML private Tab patientOverviewTab; @FXML - private TabPane patientOverviewTabPane; - + private TabPane patientOverviewTabPane; + private ObservableList stationsUebersicht = FXCollections.observableArrayList(); + private FilteredList stationsUebersichtsItemFilteredList = new FilteredList(stationsUebersicht, + item -> item.getStationEntlassung() == null || !item.getStationEntlassung().isAfter(LocalDate.now())); + private Task loadStationsHistorieTask = null; + private Task loadPatientTask = null; + @FXML + private Button btnPatRefresh; + private ObjectBinding patientObjectBinding = null; - public PatientTablesController(MainController mainController){ + public PatientTablesController(MainController mainController) { this.mainController = mainController; } - - - + public TabPane getPatientOverviewTabPane() { + return patientOverviewTabPane; + } @FXML public void initialize() { @@ -141,34 +112,41 @@ public class PatientTablesController{ tblPatientOverview.setRowFactory(tableView -> { TableRow tableRow = new TableRow<>(); tableRow.setOnMouseClicked(event -> { - if(event.getClickCount()==2 && (!tableRow.isEmpty())){ + if (event.getClickCount() == 2 && (!tableRow.isEmpty())) { Patient patient = tableRow.getItem(); showEditWindow(patient); } }); - return tableRow; + return tableRow; }); lblTablePatientEmpty.setText("Liste ist leer."); - lblTableStationEmpty.setText("Daten werden geladen..."); + tblStationOverview.disableProperty().bind(cmbStationenFilter.valueProperty().isNull()); cmbStationenFilter.itemsProperty().bind(mainController.getStammdaten().stationenProperty()); - patientObjectBinding = Bindings.createObjectBinding(() ->{ - return patientOverviewTabPane.getSelectionModel().getSelectedItem().equals(patientOverviewTab) - ? tblPatientOverview.getSelectionModel().getSelectedItem() - : null; //(Patient)tblStationOverview.getSelectionModel().getSelectedItem(); //TODO + patientObjectBinding = Bindings.createObjectBinding(() -> { + if (patientOverviewTabPane.getSelectionModel().getSelectedItem().equals(patientOverviewTab)) { + return tblPatientOverview.getSelectionModel().getSelectedItem(); + } else if (tblStationOverview.getSelectionModel().getSelectedItem() == null) { + return null; + } else { + int selectedPatId = tblStationOverview.getSelectionModel().getSelectedItem().getPatId(); + Patient selectedPatient = tblPatientOverview.getItems().stream().filter(p -> p.getPatID() == selectedPatId).findFirst().orElse(null); + return selectedPatient; + } }, tblPatientOverview.getSelectionModel().selectedItemProperty(), tblStationOverview.getSelectionModel().selectedItemProperty(), patientOverviewTabPane.getSelectionModel().selectedItemProperty()); + initColumnsPatient(); initColumnsStation(); updatePatientsFromDb(); } - private void initColumnsPatient(){ + private void initColumnsPatient() { colPatPatId.setCellValueFactory(cellDataFeatures -> cellDataFeatures.getValue().patIDProperty().asString()); colPatGeburtsname.setCellValueFactory(new PropertyValueFactory<>("geburtsname")); colPatNachname.setCellValueFactory(new PropertyValueFactory<>("nachname")); @@ -176,15 +154,14 @@ public class PatientTablesController{ colPatGebDatum.setCellValueFactory(cellDataFeatures -> cellDataFeatures.getValue().geburtsdatumProperty()); colPatStrasse.setCellValueFactory(cellDataFeatures -> { Patient patient = cellDataFeatures.getValue(); - return Bindings.concat(patient.strasseProperty(), " ", patient.hausnummerProperty()); + return Bindings.concat(patient.strasseProperty(), " ", patient.hausnummerProperty()); }); colPatPlz.setCellValueFactory(new PropertyValueFactory<>("plz")); colPatOrt.setCellValueFactory(new PropertyValueFactory<>("ort")); colPatCave.setCellValueFactory(new PropertyValueFactory<>("cave")); } - - private void initColumnsStation(){ + private void initColumnsStation() { colStatPatId.setCellValueFactory(new PropertyValueFactory("patId")); colStatFullName.setCellValueFactory(cellDataFeatures -> cellDataFeatures.getValue().patNameProperty()); colStatGebDatum.setCellValueFactory(cellDataFeatures -> cellDataFeatures.getValue().patBirthdateProperty()); @@ -193,46 +170,45 @@ public class PatientTablesController{ colStatEntlassungsdatum.setCellValueFactory(cellDataFeatures -> cellDataFeatures.getValue().stationEntlassungProperty()); - StationsUebersichtsItem stationsUebersichtsItem = new StationsUebersichtsItem(); - stationsUebersichtsItem.setPatId(12212); - stationsUebersichtsItem.setFallId(1223); - stationsUebersichtsItem.setPatAge(80); - stationsUebersichtsItem.setPatBirthdate(LocalDate.of(1935, 9, 22)); - stationsUebersichtsItem.setPatName("Wurst, Hans"); - stationsUebersichtsItem.setStationAufnahme(LocalDate.of(1980, 8, 17)); - stationsUebersichtsItem.setStationEntlassung(LocalDate.of(1981, 2, 1)); - - tblStationOverview.setItems(FXCollections.observableArrayList(stationsUebersichtsItem)); + cmbStationenFilter.valueProperty().addListener((observableValue, oldValue, newValue) -> { + updateStationsHistorieFromDb(); + }); + tblStationOverview.itemsProperty().bind(Bindings.createObjectBinding(() -> { + if (btnEntlassenePatientenZeigen.isSelected()) { + return stationsUebersicht; + } else { + return stationsUebersichtsItemFilteredList; + } + }, btnEntlassenePatientenZeigen.selectedProperty())); } @FXML - private void clickedCreatePatient (){ + private void clickedCreatePatient() { showEditWindow(null); } - @FXML - private void clickedEditPatient(){ + private void clickedEditPatient() { showEditWindow(tblPatientOverview.getSelectionModel().getSelectedItem()); } - private void showEditWindow(Patient patient){ + private void showEditWindow(Patient patient) { FXMLLoader fxmlLoader = new FXMLLoader(); fxmlLoader.setLocation(getClass().getClassLoader().getResource("patient_edit.fxml")); PatientEditorController patientEditorController = new PatientEditorController(mainController); fxmlLoader.setControllerFactory(clazz -> patientEditorController); Parent root = null; - try{ + try { root = fxmlLoader.load(); - }catch (IOException e){ + } catch (IOException e) { e.printStackTrace(); return; } Stage stage = new Stage(); - stage.setTitle(patient==null ? "Neuen Patienten erstellen": "Patient bearbeiten"); + stage.setTitle(patient == null ? "Neuen Patienten erstellen" : "Patient bearbeiten"); stage.setScene(new Scene(root, 600, 600)); stage.getIcons().add(new Image("icon.png")); @@ -243,75 +219,129 @@ public class PatientTablesController{ stage.show(); } + public void updatePatientsFromDb() { + if (this.loadPatientTask != null && this.loadPatientTask.isRunning()) { + System.out.println("Patienten werden bereits geladen."); + return; + } - public void updatePatientsFromDb(){ - if(this.loadPatientTask != null && this.loadPatientTask.isRunning()) { - System.out.println("Patienten werden bereits geladen."); - return; - } + btnPatRefresh.setDisable(true); - btnPatRefresh.setDisable(true); + tblPatientOverview.setItems(null); - tblPatientOverview.setItems(null); + mainController.increaseParallelTaskCount(); - mainController.increaseParallelTaskCount(); + lblTablePatientEmpty.setText("Liste wird geladen..."); - lblTablePatientEmpty.setText("Liste wird geladen..."); + Task> loadPatientsTask = new Task>() { - Task>loadPatientsTask = new Task>(){ + @Override + protected List call() throws Exception { + return FXCollections.observableArrayList(DBHandler.getAllPatients()); + } + + @Override + protected void succeeded() { + super.succeeded(); + btnPatRefresh.setDisable(false); + lblTablePatientEmpty.setText("Liste ist leer."); + tblPatientOverview.setItems(FXCollections.observableArrayList(this.getValue())); + mainController.decreaseParallelTaskCount(); + } - @Override - protected List call() throws Exception { - return FXCollections.observableArrayList(DBHandler.getAllPatients()); + @Override + protected void failed() { + super.failed(); + btnPatRefresh.setDisable(false); + lblTablePatientEmpty.setText("Laden fehlgeschlagen!"); + mainController.decreaseParallelTaskCount(); + tblPatientOverview.setItems(null); + if (getException() != null) { + getException().printStackTrace(); } + } + }; + this.loadPatientTask = loadPatientsTask; + + Thread thread = new Thread(loadPatientsTask); + thread.setDaemon(true); + thread.start(); + } + + @FXML + private void clickedRefreshStation() { + updateStationsHistorieFromDb(); + } + + public void updateStationsHistorieFromDb() { + if (this.loadStationsHistorieTask != null) { + loadStationsHistorieTask.cancel(); + } + lblTableStationEmpty.setText("Liste wird geladen..."); - @Override - protected void succeeded() { - super.succeeded(); - btnPatRefresh.setDisable(false); - lblTablePatientEmpty.setText("Liste ist leer."); - tblPatientOverview.setItems(FXCollections.observableArrayList(this.getValue())); + btnStatRefresh.setDisable(true); + + stationsUebersicht.clear(); + + mainController.increaseParallelTaskCount(); + + + Task> loadStatHist = new Task>() { + + @Override + protected List call() throws Exception { + return FXCollections.observableArrayList( + DBHandler.getStationsUebersichtsItems(cmbStationenFilter.getValue().getStation())); + } + + @Override + protected void succeeded() { + super.succeeded(); + if (!isCancelled()) { + lblTableStationEmpty.setText("Liste ist leer."); + stationsUebersicht.setAll(this.getValue()); + btnStatRefresh.setDisable(false); mainController.decreaseParallelTaskCount(); } + } - @Override - protected void failed() { - super.failed(); - btnPatRefresh.setDisable(false); - lblTablePatientEmpty.setText("Laden fehlgeschlagen!"); + @Override + protected void cancelled() { + super.cancelled(); + mainController.decreaseParallelTaskCount(); + } + + @Override + protected void failed() { + super.failed(); + if (!isCancelled()) { + lblTableStationEmpty.setText("Laden fehlgeschlagen!"); + getException().printStackTrace(); + btnStatRefresh.setDisable(false); mainController.decreaseParallelTaskCount(); - tblPatientOverview.setItems(null); - if(getException()!=null){ - getException().printStackTrace(); - } } - }; - this.loadPatientTask = loadPatientsTask; + } + }; + this.loadStationsHistorieTask = loadStatHist; - Thread thread = new Thread(loadPatientsTask); - thread.setDaemon(true); - thread.start(); + Thread thread = new Thread(loadStationsHistorieTask); + thread.setDaemon(true); + thread.start(); } - - private Task loadPatientTask = null; - @FXML - private Button btnPatRefresh; - - @FXML - private void clickedRefreshPatient(){ + private void clickedRefreshPatient() { updatePatientsFromDb(); } - private ObjectBinding patientObjectBinding = null; - - public ObjectBinding selectedPatientProperty(){ + public ObjectBinding selectedPatientProperty() { return patientObjectBinding; } - public Patient getSelectedPatient(){ + public Patient getSelectedPatient() { return selectedPatientProperty().get(); } + + } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/SendAndReceiveMessage.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/SendAndReceiveMessage.java new file mode 100644 index 0000000..939d5d8 --- /dev/null +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/SendAndReceiveMessage.java @@ -0,0 +1,230 @@ +package de.uniluebeck.mi.projmi6.controller; + +/** + * Created by 630030 on 19.11.15. + */ +import java.io.IOException; +import java.util.Map; + +import ca.uhn.hl7v2.DefaultHapiContext; +import ca.uhn.hl7v2.HL7Exception; +import ca.uhn.hl7v2.HapiContext; +import ca.uhn.hl7v2.app.Connection; +import ca.uhn.hl7v2.app.ConnectionListener; +import ca.uhn.hl7v2.app.HL7Service; +import ca.uhn.hl7v2.app.Initiator; +import ca.uhn.hl7v2.llp.LLPException; +import ca.uhn.hl7v2.model.Message; +import ca.uhn.hl7v2.parser.Parser; +import ca.uhn.hl7v2.protocol.ReceivingApplication; +import ca.uhn.hl7v2.protocol.ReceivingApplicationExceptionHandler; + + +public class SendAndReceiveMessage { + + + public static void main(String[] args) throws Exception { + } + + public void sendMessage(){ + /* + * The following section of code establishes a server listening + * on port 1011 for new connections, and then "handles" them by + */ + int port = 1011; // The port to listen on + boolean useTls = false; // Don't use TLS/SSL + HapiContext context = new DefaultHapiContext(); + HL7Service server = context.newServer(port, useTls); + + + /* + * Create a client, which will connect to our waiting + * server and send messages to it. + */ + + // A connection object represents a socket attached to an HL7 server + Connection connection = null; + try { + connection = context.newClient("localhost", port, useTls); + } catch (HL7Exception e) { + e.printStackTrace(); + } + + // Create a message to send + String msg = "MSH|^~\\&|HIS|RIH|EKG|EKG|199904140038||ADT^A01|12345|P|2.2\r" + + "PID|0001|00009874|00001122|A00977|SMITH^JOHN^M|MOM|19581119|F|NOTREAL^LINDA^M|C|564 SPRING ST^^NEEDHAM^MA^02494^US|0002|(818)565-1551|(425)828-3344|E|S|C|0000444444|252-00-4414||||SA|||SA||||NONE|V1|0001|I|D.ER^50A^M110^01|ER|P00055|11B^M011^02|070615^BATMAN^GEORGE^L|555888^NOTREAL^BOB^K^DR^MD|777889^NOTREAL^SAM^T^DR^MD^PHD|ER|D.WT^1A^M010^01|||ER|AMB|02|070615^NOTREAL^BILL^L|ER|000001916994|D||||||||||||||||GDD|WA|NORM|02|O|02|E.IN^02D^M090^01|E.IN^01D^M080^01|199904072124|199904101200|199904101200||||5555112333|||666097^NOTREAL^MANNY^P\r" + + "NK1|0222555|NOTREAL^JAMES^R|FA|STREET^OTHER STREET^CITY^ST^55566|(222)111-3333|(888)999-0000|||||||ORGANIZATION\r" + + "PV1|0001|I|D.ER^1F^M950^01|ER|P000998|11B^M011^02|070615^BATMAN^GEORGE^L|555888^OKNEL^BOB^K^DR^MD|777889^NOTREAL^SAM^T^DR^MD^PHD|ER|D.WT^1A^M010^01|||ER|AMB|02|070615^VOICE^BILL^L|ER|000001916994|D||||||||||||||||GDD|WA|NORM|02|O|02|E.IN^02D^M090^01|E.IN^01D^M080^01|199904072124|199904101200|||||5555112333|||666097^DNOTREAL^MANNY^P\r" + + "PV2|||0112^TESTING|55555^PATIENT IS NORMAL|NONE|||19990225|19990226|1|1|TESTING|555888^NOTREAL^BOB^K^DR^MD||||||||||PROD^003^099|02|ER||NONE|19990225|19990223|19990316|NONE\r" + + "AL1||SEV|001^POLLEN\r" + + "GT1||0222PL|NOTREAL^BOB^B||STREET^OTHER STREET^CITY^ST^77787|(444)999-3333|(222)777-5555||||MO|111-33-5555||||NOTREAL GILL N|STREET^OTHER STREET^CITY^ST^99999|(111)222-3333\r" + + "IN1||022254P|4558PD|BLUE CROSS|STREET^OTHER STREET^CITY^ST^00990||(333)333-6666||221K|LENIX|||19980515|19990515|||PATIENT01 TEST D||||||||||||||||||02LL|022LP554"; + Parser p = context.getPipeParser(); + Message adt = null; + try { + adt = p.parse(msg); + } catch (HL7Exception e) { + e.printStackTrace(); + } + + // The initiator is used to transmit unsolicited messages + Initiator initiator = connection.getInitiator(); + Message response = null; + try { + response = initiator.sendAndReceive(adt); + } catch (HL7Exception e) { + e.printStackTrace(); + } catch (LLPException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + String responseString = null; + try { + responseString = p.encode(response); + } catch (HL7Exception e) { + e.printStackTrace(); + } + System.out.println("Received response:\n" + responseString); + + /* + * MSH|^~\&|||||20070218200627.515-0500||ACK|54|P|2.2 MSA|AA|12345 + */ + + /* + * If you want to send another message to the same destination, it's fine + * to ask the context again for a client to attach to the same host/port. + * The context will be smart about it and return the same (already + * connected) client Connection instance, assuming it hasn't been closed. + */ + try { + connection = context.newClient("localhost", port, useTls); + } catch (HL7Exception e) { + e.printStackTrace(); + } + initiator = connection.getInitiator(); + try { + response = initiator.sendAndReceive(adt); + } catch (HL7Exception e) { + e.printStackTrace(); + } catch (LLPException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + + /* + * Close the connection when you are done with it. + */ + connection.close(); + + // Stop the receiving server and client + server.stopAndWait(); + + } + + + + + + public void receiveMessage(){ + /* + * The following section of code establishes a server listening + * on port 1011 for new connections, and then "handles" them by + */ + int port = 1011; // The port to listen on + boolean useTls = false; // Don't use TLS/SSL + HapiContext context = new DefaultHapiContext(); + HL7Service server = context.newServer(port, useTls); + + /* + * The server may have any number of "application" objects registered to + * handle messages. We are going to create an application to listen to + * BAR^P05 messages. + */ + ReceivingApplication handler = new OurReceiverApplication(); + server.registerApplication("BAR", "P05", handler); + + /* + *We want to be notified any time a new connection comes in or is + * lost, so we register a connection listener + */ + server.registerConnectionListener(new MyConnectionListener()); + + /* + * We want to be notified any processing failures when receiving, + * processing, or responding to messages with the server, so we + * register an exception handler. */ + + server.setExceptionHandler(new MyExceptionHandler()); + + // Start the server listening for messages + try { + server.startAndWait(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + + } + + + + + + + + + /** + * Connection listener which is notified whenever a new + * connection comes in or is lost + */ + public static class MyConnectionListener implements ConnectionListener { + + public void connectionReceived(Connection theC) { + System.out.println("New connection received: " + theC.getRemoteAddress().toString()); + } + + public void connectionDiscarded(Connection theC) { + System.out.println("Lost connection from: " + theC.getRemoteAddress().toString()); + } + + } + + /** + * Exception handler which is notified any time + */ + public static class MyExceptionHandler implements ReceivingApplicationExceptionHandler { + + /** + * Process an exception. + * + * @param theIncomingMessage + * the incoming message. This is the raw message which was + * received from the external system + * @param theIncomingMetadata + * Any metadata that accompanies the incoming message. See {@link ca.uhn.hl7v2.protocol.Transportable#getMetadata()} + * @param theOutgoingMessage + * the outgoing message. The response NAK message generated by + * HAPI. + * @param theE + * the exception which was received + * @return The new outgoing message. This can be set to the value provided + * by HAPI in outgoingMessage, or may be replaced with + * another message. This method may not return null. + */ + public String processException(String theIncomingMessage, Map theIncomingMetadata, String theOutgoingMessage, Exception theE) throws HL7Exception { + + /* + * Here you can do any processing you like. If you want to change + * the response (NAK) message which will be returned you may do + * so, or just return the NAK which HAPI already created (theOutgoingMessage) + */ + + return theOutgoingMessage; + } + + } + +} diff --git a/src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java b/src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java index 86c3c10..5d551e1 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java @@ -1,14 +1,25 @@ package de.uniluebeck.mi.projmi6.controller; -import de.uniluebeck.mi.projmi6.model.Fall; +import de.uniluebeck.mi.projmi6.db.DBHandler; +import de.uniluebeck.mi.projmi6.model.Station; import de.uniluebeck.mi.projmi6.model.StationsHistorie; -import de.uniluebeck.mi.projmi6.model.Untersuchung; import de.uniluebeck.mi.projmi6.view.DateTimePicker; +import javafx.beans.binding.Bindings; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.collections.transformation.FilteredList; +import javafx.event.ActionEvent; import javafx.fxml.FXML; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; +import javafx.scene.control.*; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.GridPane; + +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.List; +import java.util.stream.Collectors; /** * Created by 631806 on 12.11.15. @@ -18,46 +29,180 @@ public class StationsHistorieController { /** * The station history that is shown in the edit window, or null if a new station history should be created. */ - private StationsHistorie stationsHistorie = null; + private StationsHistorie stationsHistorieSelected = null; private MainController mainController; @FXML - private TableViewtblStationsHistorie; + private TableViewtblStationsHistorie; @FXML private Button btnStatHistCancel, btnStatHistSave; @FXML - private Label statHistCreator, statHistCreatTime, statHistEditor, statHistEditTime; + private Label statHistCreator, statHistCreateTime, statHistEditor, statHistEditTime; + + @FXML + private TableColumn colStatHistStation; @FXML - private TableColumn colStatHistAbteilung, colStatHistStation, colStatHistAufnahmeDatum, colStatHistEntlassungsDatum; + private TableColumn colStatHistAufnahmeDatum, colStatHistEntlassungsDatum; @FXML private DateTimePicker dtTmAufnahme, dtTmEntlassung; + @FXML + private ComboBox cmbStation; + + @FXML + private ComboBox cmbAbteilung; + public StationsHistorieController(MainController mainController){ this.mainController = mainController; } @FXML - private void clickedCancel(){ + private void clickedEdit() { + this.state.set(State.EDIT); + } + + + public enum State { + CREATE, EDIT, VIEW + } + + public State getState() { + return state.get(); + } + + public ReadOnlyObjectProperty stateProperty() { + return state; + } + + + + SimpleObjectProperty state = new SimpleObjectProperty<>(State.VIEW); + + public void setStationsHistorie(ObservableList stationsHistorie) { + this.stationsHistorie.set(stationsHistorie); + } + + private SimpleObjectProperty> stationsHistorie = + new SimpleObjectProperty<>(); + + + @FXML + GridPane fields; + + @FXML + private void initialize() { + initColumns(); + + initStationsFilter(); + + + fields.disableProperty().bind(stateProperty().isEqualTo(State.VIEW)); + + state.addListener((observable, oldValue, newValue) -> { + if(newValue == State.CREATE || newValue == State.EDIT){ + mainController.lockForEdit(MainController.TabName.STATIONSHISTORIE); + }else{ + mainController.unlockFromEdit(); + } + }); + + + tblStationsHistorie.itemsProperty().bind(stationsHistorie); + tblStationsHistorie.getSelectionModel().selectedItemProperty().addListener((observableValue, oldValue, newValue) -> { + setStationsHistorieSelected(newValue); + }); + } + + @FXML + public Button btnStatHistAbort; + + + private void initStationsFilter(){ + final String any = "beliebig"; + + List abteilungen = mainController.getStammdaten().getStationen().stream() + .map(stat->stat.getAbteilung()).distinct().collect(Collectors.toList()); + cmbAbteilung.setItems(FXCollections.observableArrayList(abteilungen)); + cmbAbteilung.getItems().add(0, any); + cmbAbteilung.getSelectionModel().select(0); + + btnStatHistCancel.visibleProperty().bind(state.isEqualTo(State.VIEW).and(tblStationsHistorie.getSelectionModel().selectedItemProperty().isNotNull())); + btnStatHistSave.visibleProperty().bind(state.isEqualTo(State.VIEW).not()); + btnStatHistAbort.visibleProperty().bind(state.isEqualTo(State.VIEW).not()); + btnStatHistEdit.visibleProperty().bind(state.isEqualTo(State.VIEW)); + + tblStationsHistorie.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> { + setStationsHistorieSelected(newValue); + }); + + FilteredList stationenFiltered = new FilteredList(mainController.getStammdaten().getStationen()); + + stationenFiltered.predicateProperty().bind(Bindings.createObjectBinding(() -> { + if(cmbAbteilung.getValue()==null || cmbAbteilung.getValue().equals(any)){ + return p->true; + } + return p -> p.getAbteilung().equals(cmbAbteilung.getValue()); + },cmbAbteilung.valueProperty())); + + + + cmbStation.setItems(stationenFiltered); + } + + @FXML + Button btnStatHistEdit; + + + + @FXML + private void clickedCancel(){ + // this.state.set(State.VIEW); } @FXML private void clickedSave(){ + if(getState()==State.CREATE){ + StationsHistorie stationsHistorie = new StationsHistorie(); + copyFieldDataIntoStationsHistorie(stationsHistorie); + try { + DBHandler.setStationsHistorie(stationsHistorie,false); + } catch (SQLException e) { + e.printStackTrace(); + } + mainController.refreshCaseData(); + } + } + @FXML + private void clickedAbort(){ + state.set(State.VIEW); + copyStationsHistorieDataIntoFields(); } @FXML private void clickedCreateAufenthalt(){ + this.state.set(State.CREATE); + setStationsHistorieSelected(null); + } + public ObservableList getStationsHistorie() { + return stationsHistorie.get(); } - public void setStationsHistorie(StationsHistorie stationsHistorie){ - this.stationsHistorie = stationsHistorie; + public SimpleObjectProperty> stationsHistorieProperty() { + return stationsHistorie; + } + + + + public void setStationsHistorieSelected(StationsHistorie stationsHistorie){ + this.stationsHistorieSelected=stationsHistorie; if(stationsHistorie==null){ clearFields(); }else { @@ -66,47 +211,57 @@ public class StationsHistorieController { } - private void copyStationsHistorieDataIntoFields(){ - // colStatHistAbteilung.setText(stationsHistorie.get()); - // colStatHistStation.setText(stationsHistorie.getStation()); - // colStatHistAufnahmeDatum.setDateTime(stationsHistorie.getAufnahmeDatum()); - // colStatHistEntlassungsDatum.setDateTime(stationsHistorie.getEntlassungsDatum()); - // dtTmAufnahme=setDateTime(stationsHistorie.getAufnahmeDatum()); - // dtTmEntlassung=setDateTime(stationsHistorie.getEntlassungsDatum()); - statHistCreator.setText(Integer.toString(stationsHistorie.getErsteller())); - statHistCreatTime.setText(stationsHistorie.getErstellDatumZeit().toString()); - statHistEditor.setText(Integer.toString(stationsHistorie.getBearbeiter())); - statHistEditTime.setText(stationsHistorie.getBearbeitetDatumZeit().toString()); + private void initColumns(){ + // colStatHistStation.setCellValueFactory(new PropertyValueFactory()); + colStatHistAufnahmeDatum.setCellValueFactory(new PropertyValueFactory("aufnahmeDatum")); + colStatHistEntlassungsDatum.setCellValueFactory(new PropertyValueFactory("entlassungsDatum")); + //colStatHistStation.setCellValueFactory(new PropertyValueFactory()); + // } - private void copyFieldDataIntoStationsHistorie(StationsHistorie stationsHistorie){ - if(stationsHistorie==null){ + private void copyStationsHistorieDataIntoFields(){ + + if(stationsHistorieSelected==null){ clearFields(); return; } - // stationsHistorie.set(colStatHistAbteilung.getText()); - // stationsHistorie.setStation(colStatHistStation.getText()); - // stationsHistorie.setAufnahmeDatum(colStatHistAufnahmeDatum.getDateTime()); - // stationsHistorie.getEntlassungsDatum(colStatHistEntlassungsDatum.getDateTime()); - stationsHistorie.setAufnahmeDatum(dtTmAufnahme.getDateTime()); - // stationsHistorie.getEntlassungsDatum(dtTmEntlassung.getDateTime()); + //TODO cmbStation.setValue + dtTmAufnahme.setDateTime(stationsHistorieSelected.getAufnahmeDatum()); + dtTmEntlassung.setDateTime(stationsHistorieSelected.getEntlassungsDatum()); + + statHistCreator.setText(Integer.toString(stationsHistorieSelected.getErsteller())); + if(stationsHistorieSelected.getErstellDatumZeit()!=null){ + statHistCreateTime.setText(stationsHistorieSelected.getErstellDatumZeit().toString()); + } + statHistEditor.setText(Integer.toString(stationsHistorieSelected.getBearbeiter())); + if(stationsHistorieSelected.getBearbeitetDatumZeit()!=null){ + statHistEditTime.setText(stationsHistorieSelected.getBearbeitetDatumZeit().toString()); + } + } + + private void copyFieldDataIntoStationsHistorie(StationsHistorie stationsHistorie){ + stationsHistorie.setAufnahmeDatum(dtTmAufnahme.getDateTime()); + stationsHistorie.setEntlassungsDatum(dtTmEntlassung.getDateTime()); + stationsHistorie.setStation(cmbStation.getValue()); + stationsHistorie.setFallID(mainController.getFall().getFallID()); + stationsHistorie.setStationKey(cmbStation.getValue().getStation()); } private void clearFields(){ - //statHistCreateTime.setText(""); - //statHistCreator.setText(""); - //statHistEditTime.setText(""); - // statHistEditor.setText(""); + statHistCreateTime.setText(""); + statHistCreator.setText(""); + statHistEditTime.setText(""); + statHistEditor.setText(""); + + cmbAbteilung.setValue(null); + cmbStation.setValue(null); + - colStatHistAbteilung.setText(""); - colStatHistStation.setText(""); - // colStatHistAufnahmeDatum.setDateTime(null); - // colStatHistEntlassungsDatum.setDateTime(null); dtTmAufnahme.setDateTime(null); - dtTmEntlassung.setDateTime(null); + dtTmEntlassung.setDateTime(null); } } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java b/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java index b6c77a5..91d94a4 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java @@ -48,7 +48,9 @@ public class DBHandler { "`LetzterBearbeiter`," + "`Ersteller`)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; - private static final String SELECT_ALL_STATIONEN = "SELECT * FROM `stammstation`"; + private static final String SELECT_ALL_STATIONEN = "SELECT *,`r`.`abteilung` AS abteilung " + + "FROM `stammstation` s " + + "INNER JOIN `relfachrichtungstation` r ON s.station = r.station"; private static final String SELECT_FAELLE_BY_PATID = "SELECT * FROM `fall` WHERE `patientid` = ?"; private static final String INSERT_FALL = "INSERT INTO `fall`" + "(`Aufnahmedatum`," + @@ -95,7 +97,7 @@ public class DBHandler { "`LetzterBearbeiter`," + "`Ersteller`)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; - private static final String UPDATE_UNTERSUCHUNG = "UPDATE `untersuchung`" + + private static final String UPDATE_UNTERSUCHUNG = "UPDATE `untersuchung` " + "SET `DurchfuehrenderArzt`=?," + "`FallID`=?," + "`OPSCode`=?," + @@ -108,7 +110,33 @@ public class DBHandler { private static final String SELECT_DIAGNOSE_BY_FALLID = "SELECT * FROM `diagnose` WHERE `fallid` = ?"; private static final String SELECT_ALL_KASSEN = "SELECT * FROM `kasse`"; private static final String SELECT_KASSE_BY_KASSENID = "SELECT * FROM `kasse` WHERE `kasse`.`KassenID` = ?"; - private static final String SELECT_STATHIST_BY_STATION = "SELECT * FROM `stationshistorie` WHERE `stationshistorie`.`Station` = ?"; + private static final String SELECT_STATHIST_BY_FALLID = "SELECT * FROM `stationshistorie` WHERE `stationshistorie`.`fallid` = ?"; + private static final String SELECT_STATUBERITEMS_BY_STATION = "SELECT p.id AS patid," + + "concat(p.nachname, ', ', p.vorname) AS patname," + + "p.geburtsdatum AS dob," + + "timestampdiff(YEAR, p.geburtsdatum, curdate()) AS patage," + + "f.aufnahmedatum AS aufnahme," + + "f.entlassungsdatum AS entlassung," + + "f.fallid AS fallid " + + "FROM stationshistorie s " + + "INNER JOIN fall f ON s.fallid = f.fallid " + + "INNER JOIN patient p ON f.patientid = p.id " + + "WHERE s.station = ?"; + private static final String INSERT_STATHISTENTRY = "INSERT INTO `stationshistorie`" + + "(`Aufnahmedatum`," + + "`Entlassungsdatum`," + + "`FallID`," + + "`LetzterBearbeiter`," + + "`Station`," + + "`Ersteller`)" + + "VALUES (?, ?, ?, ?, ?, ?)"; + private static final String UPDATE_STATHISTENTRY = "UPDATE `stationshistorie` " + + "SET `Aufnahmedatum`=?," + + "`Entlassungsdatum`=?," + + "`FallID`=?," + + "`LetzterBearbeiter`=?," + + "`Station`=? " + + "WHERE `StatHistID`=?"; /** * Gibt alle {@link Patient} aus der DB zurueck. @@ -117,7 +145,7 @@ public class DBHandler { * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ public static List getAllPatients() throws SQLException { - Statement statement = MySqlConnFactory.getConnection().createStatement(); + Statement statement = MySqlConnectionFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_PATIENTS); List patients = new ArrayList<>(); @@ -166,7 +194,7 @@ public class DBHandler { // TODO: Never used. public static Patient getPatient(int id) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_PATIENT_BY_ID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_PATIENT_BY_ID); ResultSet rs; statement.setInt(1, id); rs = statement.executeQuery(); @@ -185,9 +213,9 @@ public class DBHandler { public static void setPatient(Patient patient, int mitarbid, boolean isUpdate) throws SQLException { PreparedStatement statement; if (isUpdate) { - statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_PATIENT); + statement = MySqlConnectionFactory.getConnection().prepareStatement(UPDATE_PATIENT); } else { - statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_PATIENT); + statement = MySqlConnectionFactory.getConnection().prepareStatement(INSERT_PATIENT); } statement.setString(1, patient.getCave()); // CAVE @@ -225,7 +253,7 @@ public class DBHandler { } public static List getAllStationen() throws SQLException { - Statement statement = MySqlConnFactory.getConnection().createStatement(); + Statement statement = MySqlConnectionFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_STATIONEN); List stationen = new ArrayList<>(); @@ -249,15 +277,44 @@ public class DBHandler { station.setBezeichnung(rs.getString("bezeichnung")); station.setBezeichnungLang(rs.getString("bezeichnunglang")); station.setStationstyp(rs.getInt("stationstyp")); + station.setAbteilung(rs.getString("abteilung")); return station; } - public static List getStationsHistorieByStation(String station) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_STATHIST_BY_STATION); + public static List getStationsUebersichtsItems(String station) throws SQLException { + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_STATUBERITEMS_BY_STATION); statement.setString(1, station); ResultSet rs = statement.executeQuery(); + List statUeberItems = new ArrayList<>(); + while (rs.next()) { + statUeberItems.add(getStatUeberItem(rs)); + } + return statUeberItems; + } + + private static StationsUebersichtsItem getStatUeberItem(ResultSet rs) throws SQLException { + StationsUebersichtsItem item = new StationsUebersichtsItem(); + item.setFallId(rs.getInt("fallid")); + item.setPatId(rs.getInt("patid")); + item.setPatName(rs.getString("patname")); + item.setPatAge(rs.getInt("patage")); + item.setPatBirthdate(rs.getDate("dob").toLocalDate()); + if (rs.getDate("aufnahme") != null) { + item.setStationAufnahme(rs.getDate("aufnahme").toLocalDate()); + } + if (rs.getDate("entlassung") != null) { + item.setStationEntlassung(rs.getDate("entlassung").toLocalDate()); + } + return item; + } + + public static List getStationsHistorieByFall(Fall fall) throws SQLException { + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_STATHIST_BY_FALLID); + statement.setInt(1, fall.getFallID()); + ResultSet rs = statement.executeQuery(); + List historie = new ArrayList<>(); while (rs.next()) { historie.add(getStationsHistorie(rs)); @@ -266,6 +323,37 @@ public class DBHandler { return historie; } + public static void setStationsHistorie(StationsHistorie hist, boolean isUpdate) throws SQLException { + PreparedStatement statement; + if (isUpdate) { + statement = MySqlConnectionFactory.getConnection().prepareStatement(UPDATE_STATHISTENTRY); + } else { + statement = MySqlConnectionFactory.getConnection().prepareStatement(INSERT_STATHISTENTRY); + } + + if (hist.getAufnahmeDatum() != null) { + statement.setTimestamp(1, Timestamp.valueOf(hist.getAufnahmeDatum())); // `Aufnahmedatum` + } else { + statement.setTimestamp(1, null); + } + if (hist.getEntlassungsDatum() != null) { + statement.setTimestamp(2, Timestamp.valueOf(hist.getEntlassungsDatum())); // `Entlassungsdatum` + } else { + statement.setTimestamp(2, null); + } + statement.setInt(3, hist.getFallID()); // `FallID` + statement.setInt(4, hist.getBearbeiter()); // `LetzterBearbeiter` + statement.setString(5, hist.getStationKey()); // `Station` + + if (isUpdate) { + statement.setInt(6, hist.getStatHistID()); // `StatHistID` + statement.executeUpdate(); + } else { + statement.setInt(6, hist.getErsteller()); // `Ersteller` + statement.execute(); + } + } + private static StationsHistorie getStationsHistorie(ResultSet rs) throws SQLException { StationsHistorie hist = new StationsHistorie(); @@ -285,7 +373,7 @@ public class DBHandler { } public static List getFaelleByPatID(int id) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_FAELLE_BY_PATID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_FAELLE_BY_PATID); statement.setInt(1, id); ResultSet rs = statement.executeQuery(); @@ -331,7 +419,7 @@ public class DBHandler { /** * Fuehrt {@code INSERT} bei einem neuen Datensatz und {@code UPDATE} bei einem existierenden Datensatz aus. * - * @param fall zu verarbeitender Datensatz. + * @param fall zu verarbeitender Datensatz. * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. * @param isUpdate {@code true} wenn der Datensatz bereits existiert, sonst {@code false}. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. @@ -339,9 +427,9 @@ public class DBHandler { public static void setFall(Fall fall, int mitarbid, boolean isUpdate) throws SQLException { PreparedStatement statement; if (isUpdate) { - statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_FALL); + statement = MySqlConnectionFactory.getConnection().prepareStatement(UPDATE_FALL); } else { - statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_FALL); + statement = MySqlConnectionFactory.getConnection().prepareStatement(INSERT_FALL); } if (fall.getAufnahmeDatum() != null) { @@ -396,7 +484,8 @@ public class DBHandler { /** * Fuehrt {@code INSERT} eines neuen Datensatz durch. - * @param fall zu verarbeitender Datensatz. + * + * @param fall zu verarbeitender Datensatz. * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ @@ -412,7 +501,7 @@ public class DBHandler { } private static Diagnose getDiagnose(int id) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_ID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_ID); statement.setInt(1, id); ResultSet rs = statement.executeQuery(); @@ -450,7 +539,7 @@ public class DBHandler { } public static List getAllIcd10Codes() throws SQLException { - Statement statement = MySqlConnFactory.getConnection().createStatement(); + Statement statement = MySqlConnectionFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_ICD10CODES); List icd10codes = new ArrayList<>(); @@ -462,7 +551,7 @@ public class DBHandler { } private static Icd10Code getIcd10Code(String code, int version) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_ICD10CODE_BY_ID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_ICD10CODE_BY_ID); ResultSet rs; statement.setString(1, code); statement.setInt(2, version); @@ -488,7 +577,7 @@ public class DBHandler { } public static List getAllOpsCodes() throws SQLException { - Statement statement = MySqlConnFactory.getConnection().createStatement(); + Statement statement = MySqlConnectionFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_OPSCODES); List opscodes = new ArrayList<>(); @@ -500,7 +589,7 @@ public class DBHandler { } private static OpsCode getOpsCode(String code, int version) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_OPSCODE_BY_ID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_OPSCODE_BY_ID); ResultSet rs; statement.setString(1, code); statement.setInt(2, version); @@ -526,7 +615,7 @@ public class DBHandler { } public static List getAllMitarbeiter() throws SQLException { - Statement statement = MySqlConnFactory.getConnection().createStatement(); + Statement statement = MySqlConnectionFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_MITARBEITER); List mitarbeiters = new ArrayList<>(); @@ -538,7 +627,7 @@ public class DBHandler { } private static Mitarbeiter getMitarbeiter(int id) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_MITARBEITER_BY_ID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_MITARBEITER_BY_ID); ResultSet rs; statement.setInt(1, id); rs = statement.executeQuery(); @@ -571,7 +660,7 @@ public class DBHandler { * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. */ public static List getUntersuchungByFall(Fall fall) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_UNTERS_BY_FALLID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_UNTERS_BY_FALLID); statement.setInt(1, fall.getFallID()); ResultSet rs = statement.executeQuery(); @@ -606,9 +695,9 @@ public class DBHandler { public static void setUntersuchung(Untersuchung untersuchung, int mitarbid, boolean isUpdate) throws SQLException { PreparedStatement statement; if (isUpdate) { - statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_UNTERSUCHUNG); + statement = MySqlConnectionFactory.getConnection().prepareStatement(UPDATE_UNTERSUCHUNG); } else { - statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_UNTERSUCHUNG); + statement = MySqlConnectionFactory.getConnection().prepareStatement(INSERT_UNTERSUCHUNG); } statement.setInt(1, untersuchung.getDurchfuehrenderArzt().getMitarbID()); // DurchfuehrenderArzt @@ -626,7 +715,7 @@ public class DBHandler { } public static List getDiagnosenByFall(Fall fall) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID); statement.setInt(1, fall.getFallID()); ResultSet rs = statement.executeQuery(); @@ -639,7 +728,7 @@ public class DBHandler { } public static List getAllKassen() throws SQLException { - Statement statement = MySqlConnFactory.getConnection().createStatement(); + Statement statement = MySqlConnectionFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_KASSEN); List kassen = new ArrayList<>(); @@ -651,7 +740,7 @@ public class DBHandler { } private static Kasse getKasse(int kassenid) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_KASSE_BY_KASSENID); + PreparedStatement statement = MySqlConnectionFactory.getConnection().prepareStatement(SELECT_KASSE_BY_KASSENID); statement.setInt(1, kassenid); ResultSet rs = statement.executeQuery(); diff --git a/src/main/java/de/uniluebeck/mi/projmi6/db/MySqlConnFactory.java b/src/main/java/de/uniluebeck/mi/projmi6/db/MySqlConnectionFactory.java similarity index 85% rename from src/main/java/de/uniluebeck/mi/projmi6/db/MySqlConnFactory.java rename to src/main/java/de/uniluebeck/mi/projmi6/db/MySqlConnectionFactory.java index edceed9..e680c1c 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/db/MySqlConnFactory.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/db/MySqlConnectionFactory.java @@ -7,14 +7,14 @@ import java.sql.SQLException; /** * MySQL Connection Factory. */ -public class MySqlConnFactory { +public class MySqlConnectionFactory { public static final String URL = "jdbc:mysql://141.83.20.84:3306/pmiw15g06_v01"; public static final String USER = "pmiw15g06"; public static final String PASS = "AX3yQSYJSH43PrSz"; public static final String DRIVER = "com.mysql.jdbc.Driver"; - private static MySqlConnFactory instance = new MySqlConnFactory(); + private static MySqlConnectionFactory instance = new MySqlConnectionFactory(); - private MySqlConnFactory() { + private MySqlConnectionFactory() { try { Class.forName(DRIVER); } catch (ClassNotFoundException e) { diff --git a/src/main/java/de/uniluebeck/mi/projmi6/model/Mitarbeiter.java b/src/main/java/de/uniluebeck/mi/projmi6/model/Mitarbeiter.java index 0e98139..6a72add 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/model/Mitarbeiter.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/model/Mitarbeiter.java @@ -6,7 +6,7 @@ import javafx.beans.property.SimpleStringProperty; /** * Created by 627933 on 12.11.15. */ -public class Mitarbeiter { +public class Mitarbeiter implements Comparable { private SimpleStringProperty anrede = new SimpleStringProperty(this, "anrede"); private SimpleStringProperty einweisenderArzt = new SimpleStringProperty(this, "einweisenderArzt"); private SimpleStringProperty fachrichtung = new SimpleStringProperty(this, "fachrichtung"); @@ -30,172 +30,177 @@ public class Mitarbeiter { return anrede.get(); } - public SimpleStringProperty anredeProperty() { - return anrede; - } - public void setAnrede(String anrede) { this.anrede.set(anrede); } - public String getEinweisenderArzt() { - return einweisenderArzt.get(); + public SimpleStringProperty anredeProperty() { + return anrede; } - public SimpleStringProperty einweisenderArztProperty() { - return einweisenderArzt; + public String getEinweisenderArzt() { + return einweisenderArzt.get(); } public void setEinweisenderArzt(String einweisenderArzt) { this.einweisenderArzt.set(einweisenderArzt); } - public String getFachrichtung() { - return fachrichtung.get(); + public SimpleStringProperty einweisenderArztProperty() { + return einweisenderArzt; } - public SimpleStringProperty fachrichtungProperty() { - return fachrichtung; + public String getFachrichtung() { + return fachrichtung.get(); } public void setFachrichtung(String fachrichtung) { this.fachrichtung.set(fachrichtung); } - public String getFachrichtungKurz() { - return fachrichtungKurz.get(); + public SimpleStringProperty fachrichtungProperty() { + return fachrichtung; } - public SimpleStringProperty fachrichtungKurzProperty() { - return fachrichtungKurz; + public String getFachrichtungKurz() { + return fachrichtungKurz.get(); } public void setFachrichtungKurz(String fachrichtungKurz) { this.fachrichtungKurz.set(fachrichtungKurz); } - public String getLand() { - return land.get(); + public SimpleStringProperty fachrichtungKurzProperty() { + return fachrichtungKurz; } - public SimpleStringProperty landProperty() { - return land; + public String getLand() { + return land.get(); } public void setLand(String land) { this.land.set(land); } - public int getMitarbID() { - return mitarbID.get(); + public SimpleStringProperty landProperty() { + return land; } - public SimpleIntegerProperty mitarbIDProperty() { - return mitarbID; + public int getMitarbID() { + return mitarbID.get(); } public void setMitarbID(int mitarbID) { this.mitarbID.set(mitarbID); } - public String getNachname() { - return nachname.get(); + public SimpleIntegerProperty mitarbIDProperty() { + return mitarbID; } - public SimpleStringProperty nachnameProperty() { - return nachname; + public String getNachname() { + return nachname.get(); } public void setNachname(String nachname) { this.nachname.set(nachname); } - public String getPlz() { - return plz.get(); + public SimpleStringProperty nachnameProperty() { + return nachname; } - public SimpleStringProperty plzProperty() { - return plz; + public String getPlz() { + return plz.get(); } public void setPlz(String plz) { this.plz.set(plz); } - public String getStadt() { - return stadt.get(); + public SimpleStringProperty plzProperty() { + return plz; } - public SimpleStringProperty stadtProperty() { - return stadt; + public String getStadt() { + return stadt.get(); } public void setStadt(String stadt) { this.stadt.set(stadt); } - public String getStrasse1() { - return strasse1.get(); + public SimpleStringProperty stadtProperty() { + return stadt; } - public SimpleStringProperty strasse1Property() { - return strasse1; + public String getStrasse1() { + return strasse1.get(); } public void setStrasse1(String strasse1) { this.strasse1.set(strasse1); } - public String getStrasse2() { - return strasse2.get(); + public SimpleStringProperty strasse1Property() { + return strasse1; } - public SimpleStringProperty strasse2Property() { - return strasse2; + public String getStrasse2() { + return strasse2.get(); } public void setStrasse2(String strasse2) { this.strasse2.set(strasse2); } - public String getTelefon() { - return telefon.get(); + public SimpleStringProperty strasse2Property() { + return strasse2; } - public SimpleStringProperty telefonProperty() { - return telefon; + public String getTelefon() { + return telefon.get(); } public void setTelefon(String telefon) { this.telefon.set(telefon); } - public String getTitel() { - return titel.get(); + public SimpleStringProperty telefonProperty() { + return telefon; } - public SimpleStringProperty titelProperty() { - return titel; + public String getTitel() { + return titel.get(); } public void setTitel(String titel) { this.titel.set(titel); } - public String getVorname() { - return vorname.get(); + public SimpleStringProperty titelProperty() { + return titel; } - public SimpleStringProperty vornameProperty() { - return vorname; + public String getVorname() { + return vorname.get(); } public void setVorname(String vorname) { this.vorname.set(vorname); } + public SimpleStringProperty vornameProperty() { + return vorname; + } + @Override public String toString() { return getNachname() + ", " + getVorname(); } + + @Override + public int compareTo(Object o) { + return nachname.get().compareTo(((Mitarbeiter) o).getNachname()); + } } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/model/Stammdaten.java b/src/main/java/de/uniluebeck/mi/projmi6/model/Stammdaten.java index 2f9c08b..99502e8 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/model/Stammdaten.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/model/Stammdaten.java @@ -1,6 +1,7 @@ package de.uniluebeck.mi.projmi6.model; import javafx.beans.property.SimpleObjectProperty; +import javafx.collections.FXCollections; import javafx.collections.ObservableList; /** @@ -17,60 +18,62 @@ public class Stammdaten { return opsCodes.get(); } - public SimpleObjectProperty> opsCodesProperty() { - return opsCodes; + public void setOpsCodes(ObservableList opsCodes) { + this.opsCodesProperty().set(opsCodes); } - public void setOpsCodes(ObservableList opsCodes){ - this.opsCodesProperty().set(opsCodes); + public SimpleObjectProperty> opsCodesProperty() { + return opsCodes; } public ObservableList getIcd10Codes() { return icd10Codes.get(); } - public SimpleObjectProperty> icd10CodesProperty() { - return icd10Codes; - } - public void setIcd10Codes(ObservableList icd10Codes) { this.icd10Codes.set(icd10Codes); } - public ObservableList getStationen() { - return stationen.get(); + public SimpleObjectProperty> icd10CodesProperty() { + return icd10Codes; } - public SimpleObjectProperty> stationenProperty() { - return stationen; + public ObservableList getStationen() { + return stationen.get(); } public void setStationen(ObservableList stationen) { + FXCollections.sort(stationen); this.stationen.set(stationen); } - public ObservableList getMitarbeiter() { - return mitarbeiter.get(); + public SimpleObjectProperty> stationenProperty() { + return stationen; } - public SimpleObjectProperty> mitarbeiterProperty() { - return mitarbeiter; + public ObservableList getMitarbeiter() { + return mitarbeiter.get(); } public void setMitarbeiter(ObservableList mitarbeiter) { + FXCollections.sort(mitarbeiter); this.mitarbeiter.set(mitarbeiter); } - public ObservableList getKassen() { - return kassen.get(); + public SimpleObjectProperty> mitarbeiterProperty() { + return mitarbeiter; } - public SimpleObjectProperty> kassenProperty() { - return kassen; + public ObservableList getKassen() { + return kassen.get(); } public void setKassen(ObservableList kassen) { this.kassen.set(kassen); } + public SimpleObjectProperty> kassenProperty() { + return kassen; + } + } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/model/Station.java b/src/main/java/de/uniluebeck/mi/projmi6/model/Station.java index 9464256..9a1b88a 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/model/Station.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/model/Station.java @@ -6,63 +6,80 @@ import javafx.beans.property.SimpleStringProperty; /** * Created by 630030 on 12.11.15. */ -public class Station { +public class Station implements Comparable { private SimpleStringProperty bezeichnung = new SimpleStringProperty(this, "bezeichnung"); private SimpleStringProperty bezeichnungLang = new SimpleStringProperty(this, "bezeichnungLang"); private SimpleStringProperty station = new SimpleStringProperty(this, "station"); - private SimpleIntegerProperty stationstyp = new SimpleIntegerProperty( this, "stationstyp"); + private SimpleIntegerProperty stationstyp = new SimpleIntegerProperty(this, "stationstyp"); + private SimpleStringProperty abteilung = new SimpleStringProperty(this, "abteilung"); + public String getAbteilung() { + return abteilung.get(); + } - public String getBezeichnung() { - return bezeichnung.get(); + public void setAbteilung(String abteilung) { + this.abteilung.set(abteilung); } - public SimpleStringProperty bezeichnungProperty() { - return bezeichnung; + public SimpleStringProperty abteilungProperty() { + return abteilung; + } + + public String getBezeichnung() { + return bezeichnung.get(); } public void setBezeichnung(String bezeichnung) { this.bezeichnung.set(bezeichnung); } - public String getBezeichnungLang() { - return bezeichnungLang.get(); + public SimpleStringProperty bezeichnungProperty() { + return bezeichnung; } - public SimpleStringProperty bezeichnungLangProperty() { - return bezeichnungLang; + public String getBezeichnungLang() { + return bezeichnungLang.get(); } public void setBezeichnungLang(String bezeichnungLang) { this.bezeichnungLang.set(bezeichnungLang); } - public String getStation() { - return station.get(); + public SimpleStringProperty bezeichnungLangProperty() { + return bezeichnungLang; } - public SimpleStringProperty stationProperty() { - return station; + public String getStation() { + return station.get(); } public void setStation(String station) { this.station.set(station); } - public int getStationstyp() { - return stationstyp.get(); + public SimpleStringProperty stationProperty() { + return station; } - public SimpleIntegerProperty stationstypProperty() { - return stationstyp; + public int getStationstyp() { + return stationstyp.get(); } public void setStationstyp(int stationstyp) { this.stationstyp.set(stationstyp); } + public SimpleIntegerProperty stationstypProperty() { + return stationstyp; + } + @Override public String toString() { return getBezeichnung(); } + + @Override + public int compareTo(Object o) { + return bezeichnung.get().compareTo(((Station) o).getBezeichnung()); + } } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/model/StationsHistorie.java b/src/main/java/de/uniluebeck/mi/projmi6/model/StationsHistorie.java index a59bbc0..00fb191 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/model/StationsHistorie.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/model/StationsHistorie.java @@ -12,33 +12,35 @@ public class StationsHistorie extends Version { private SimpleObjectProperty aufnahmeDatum = new SimpleObjectProperty<>(this, "aufnahmeDatum"); private SimpleObjectProperty entlassungsDatum = new SimpleObjectProperty<>(this, "entlassungsDatum"); private Fall fall; + private int fallID; // platte Objektstruktur! private Station station; + private String stationKey; // platte Objektstruktur! private SimpleIntegerProperty StatHistID = new SimpleIntegerProperty(this, "stathistid"); public LocalDateTime getAufnahmeDatum() { return aufnahmeDatum.get(); } - public SimpleObjectProperty aufnahmeDatumProperty() { - return aufnahmeDatum; - } - public void setAufnahmeDatum(LocalDateTime aufnahmeDatum) { this.aufnahmeDatum.set(aufnahmeDatum); } - public LocalDateTime getEntlassungsDatum() { - return entlassungsDatum.get(); + public SimpleObjectProperty aufnahmeDatumProperty() { + return aufnahmeDatum; } - public SimpleObjectProperty entlassungsDatumProperty() { - return entlassungsDatum; + public LocalDateTime getEntlassungsDatum() { + return entlassungsDatum.get(); } public void setEntlassungsDatum(LocalDateTime entlassungsDatum) { this.entlassungsDatum.set(entlassungsDatum); } + public SimpleObjectProperty entlassungsDatumProperty() { + return entlassungsDatum; + } + public Fall getFall() { return fall; } @@ -59,11 +61,27 @@ public class StationsHistorie extends Version { return StatHistID.get(); } + public void setStatHistID(int statHistID) { + this.StatHistID.set(statHistID); + } + public SimpleIntegerProperty statHistIDProperty() { return StatHistID; } - public void setStatHistID(int statHistID) { - this.StatHistID.set(statHistID); + public int getFallID() { + return fallID; + } + + public void setFallID(int fallID) { + this.fallID = fallID; + } + + public String getStationKey() { + return stationKey; + } + + public void setStationKey(String stationKey) { + this.stationKey = stationKey; } } diff --git a/src/main/resources/fall.fxml b/src/main/resources/fall.fxml index 957660e..a76114f 100644 --- a/src/main/resources/fall.fxml +++ b/src/main/resources/fall.fxml @@ -14,30 +14,16 @@ diff --git a/src/main/resources/patient_tables.fxml b/src/main/resources/patient_tables.fxml index e1aad8f..3b0c343 100644 --- a/src/main/resources/patient_tables.fxml +++ b/src/main/resources/patient_tables.fxml @@ -58,9 +58,10 @@ -