Browse Source

Megacommit. Imports, Format, mini Fixes.

master
Nils Dittberner 10 years ago
parent
commit
22905b0848
42 changed files with 983 additions and 1003 deletions
  1. +5
    -5
      src/main/java/de/uniluebeck/mi/projmi6/Main.java
  2. +6
    -7
      src/main/java/de/uniluebeck/mi/projmi6/controller/DiagnoseController.java
  3. +24
    -27
      src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java
  4. +11
    -16
      src/main/java/de/uniluebeck/mi/projmi6/controller/LogController.java
  5. +28
    -52
      src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java
  6. +6
    -13
      src/main/java/de/uniluebeck/mi/projmi6/controller/MessageController.java
  7. +16
    -19
      src/main/java/de/uniluebeck/mi/projmi6/controller/MessageListController.java
  8. +5
    -8
      src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java
  9. +39
    -40
      src/main/java/de/uniluebeck/mi/projmi6/controller/SettingsController.java
  10. +37
    -40
      src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java
  11. +52
    -61
      src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java
  12. +1
    -7
      src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Sender.java
  13. +2
    -4
      src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Server.java
  14. +4
    -4
      src/main/java/de/uniluebeck/mi/projmi6/model/DiagArt.java
  15. +5
    -5
      src/main/java/de/uniluebeck/mi/projmi6/model/Diagnose.java
  16. +20
    -21
      src/main/java/de/uniluebeck/mi/projmi6/model/Fachrichtung.java
  17. +10
    -11
      src/main/java/de/uniluebeck/mi/projmi6/model/Fall.java
  18. +1
    -1
      src/main/java/de/uniluebeck/mi/projmi6/model/FallArt.java
  19. +6
    -6
      src/main/java/de/uniluebeck/mi/projmi6/model/HL7Message.java
  20. +3
    -6
      src/main/java/de/uniluebeck/mi/projmi6/model/Icd10Code.java
  21. +20
    -19
      src/main/java/de/uniluebeck/mi/projmi6/model/Kasse.java
  22. +1
    -1
      src/main/java/de/uniluebeck/mi/projmi6/model/OpsCode.java
  23. +5
    -5
      src/main/java/de/uniluebeck/mi/projmi6/model/Patient.java
  24. +4
    -7
      src/main/java/de/uniluebeck/mi/projmi6/model/Stammdaten.java
  25. +25
    -25
      src/main/java/de/uniluebeck/mi/projmi6/model/StationsUebersichtsItem.java
  26. +13
    -14
      src/main/java/de/uniluebeck/mi/projmi6/model/Untersuchung.java
  27. +60
    -61
      src/main/java/de/uniluebeck/mi/projmi6/view/DateTimePicker.java
  28. +20
    -19
      src/main/java/de/uniluebeck/mi/projmi6/view/MessageIcon.java
  29. +6
    -7
      src/main/java/de/uniluebeck/mi/projmi6/view/NumberTextField.java
  30. +1
    -1
      src/main/java/de/uniluebeck/mi/projmi6/view/SelectKeyComboBoxListener.java
  31. +90
    -82
      src/main/resources/diagnose.fxml
  32. +7
    -9
      src/main/resources/fall.fxml
  33. +30
    -29
      src/main/resources/log.fxml
  34. +35
    -31
      src/main/resources/main.fxml
  35. +4
    -10
      src/main/resources/message.fxml
  36. +22
    -19
      src/main/resources/message_list.fxml
  37. +130
    -117
      src/main/resources/patient_edit.fxml
  38. +43
    -35
      src/main/resources/patient_tables.fxml
  39. +85
    -85
      src/main/resources/settings.fxml
  40. +33
    -26
      src/main/resources/stationshistorie.fxml
  41. +17
    -12
      src/main/resources/style.css
  42. +51
    -36
      src/main/resources/untersuchungen.fxml

+ 5
- 5
src/main/java/de/uniluebeck/mi/projmi6/Main.java View File

@@ -40,7 +40,7 @@ public class Main extends Application {
* Cuz building the GUI from FXML is a bit costly,
* it's done from its own thread.
*/
private Task<Parent> loadMainWindowTask = new Task<Parent>(){
private Task<Parent> loadMainWindowTask = new Task<Parent>() {


@Override
@@ -49,7 +49,7 @@ public class Main extends Application {
MainController mainController = new MainController();
updateMessage("Lade OPS-Codes...");
mainController.getStammdaten().setOpsCodes(FXCollections.observableArrayList(
DBHandler.getAllOpsCodes()
DBHandler.getAllOpsCodes()
));

updateMessage("Lade ICD-10-Codes...");
@@ -59,7 +59,7 @@ public class Main extends Application {

updateMessage("Lade Krankenkassen...");
mainController.getStammdaten().setKassen(FXCollections.observableArrayList(
DBHandler.getAllKassen()
DBHandler.getAllKassen()
));

updateMessage("Lade Mitarbeiter...");
@@ -79,7 +79,7 @@ public class Main extends Application {

Parent root = fxmlLoader.load();

server = new HL7Server(mainController);
server = new HL7Server();
server.registerApplication("ADT", "A01", new HL7Receiver<>(ADT_A01.class, mainController)); // ADT_A01 parsen
server.registerApplication("BAR", "P05", new HL7Receiver<>(BAR_P05.class, mainController)); // BAR_P05 parsen
server.start();
@@ -111,7 +111,7 @@ public class Main extends Application {
}

@Override
public void start(Stage primaryStage) {
public void start(Stage primaryStage) {
System.out.println(getClass().getClassLoader().getResource("").toExternalForm());

primaryStage.getIcons().add(icon);


+ 6
- 7
src/main/java/de/uniluebeck/mi/projmi6/controller/DiagnoseController.java View File

@@ -150,27 +150,26 @@ public class DiagnoseController {

@FXML
void clickedDiagSave(ActionEvent event) {
if(state.get() == State.CREATE){
if (state.get() == State.CREATE) {
//Create new diagnosis
Diagnose diagnose = new Diagnose();
copyFieldDataIntoDiagnose(diagnose);
try {
DBHandler.setDiagnose(diagnose);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
}else{
} else {
//Update diagnosis in db

}
mainController.refreshCaseData();
}

private void copyDiagnoseDataIntoFields(Diagnose diagnose){
private void copyDiagnoseDataIntoFields(Diagnose diagnose) {
diagDiagnoseArzt.setValue(diagnose.getArzt());



diagFreitext.setText(diagnose.getFreiText());
diagDiagnoseArt.setValue(diagnose.getDiagArt());
diagDiagnose.setValue(diagnose.getIcd10code());
@@ -181,7 +180,7 @@ public class DiagnoseController {
diagChangeTime.setText(diagnose.getBearbeitetDatumZeit().toString());
}

private void copyFieldDataIntoDiagnose(Diagnose diagnose){
private void copyFieldDataIntoDiagnose(Diagnose diagnose) {
diagnose.setIcd10code(diagDiagnose.getValue());
diagnose.setArzt(diagDiagnoseArzt.getValue());
diagnose.setFreiText(diagFreitext.getText());
@@ -192,7 +191,7 @@ public class DiagnoseController {
diagnose.setBearbeiter(mainController.getCurrentMitarbeiter().getMitarbID());
}

private void clearFields(){
private void clearFields() {
diagDiagnoseArzt.setValue(mainController.getCurrentMitarbeiter());
diagDiagnose.setValue(null);
diagFreitext.setText("");


+ 24
- 27
src/main/java/de/uniluebeck/mi/projmi6/controller/FallController.java View File

@@ -88,32 +88,31 @@ public class FallController {
return state;
}

public ObjectProperty<ObservableList<Diagnose>> diagnosenProperty(){
return fallHauptdiagnose.itemsProperty();
public ObjectProperty<ObservableList<Diagnose>> diagnosenProperty() {
return fallHauptdiagnose.itemsProperty();
}

public ObservableList<Diagnose> getDiagnosen() {
return fallHauptdiagnose.getItems();
}

public void setDiagnosen(ObservableList<Diagnose> list){
public void setDiagnosen(ObservableList<Diagnose> list) {
fallHauptdiagnose.setItems(list);
}

@FXML
public void initialize(){
public void initialize() {
fallEinweisenderArzt.disableProperty().bind(fallSelbsteinweisung.selectedProperty());
fallFallart.setItems(FXCollections.observableArrayList(FallArt.values()));
fallKasse.setItems(mainController.getStammdaten().getKassen());



initButtons();

fallFields.disableProperty().bind(state.isEqualTo(State.VIEW));

fallProperty.addListener(((observable, oldValue, newValue) -> {
if(state.get() == State.VIEW){
if (state.get() == State.VIEW) {
copyFallDataIntoField(fallProperty.get());
}
}));
@@ -124,9 +123,9 @@ public class FallController {


state.addListener((observable, oldValue, newValue) -> {
if(newValue==State.EDIT || newValue == State.CREATE){
if (newValue == State.EDIT || newValue == State.CREATE) {
mainController.lockForEdit(MainController.TabName.OVERVIEW);
}else{
} else {
mainController.unlockFromEdit();
}
});
@@ -135,7 +134,7 @@ public class FallController {
/**
* Hide the buttons depending on controller state.
*/
private void initButtons(){
private void initButtons() {
btnFallEnableEdit.managedProperty().bind(
state.isEqualTo(State.VIEW).and(fallProperty.isNotNull())
);
@@ -162,7 +161,7 @@ public class FallController {
}

@FXML
private void clickedSendHl7(){
private void clickedSendHl7() {
/* Natascha */
//TODO send funny message
Patient patient = mainController.getPatientTablesController().getSelectedPatient();
@@ -176,7 +175,7 @@ public class FallController {
}
}

public void editFall(){
public void editFall() {
this.state.set(State.EDIT);
}

@@ -244,11 +243,11 @@ public class FallController {
fallVersichertennummer.setText(patient.getVersichertennummer());
}

private void clearFields(){
if(state.get() == State.CREATE) {
private void clearFields() {
if (state.get() == State.CREATE) {
dtTmAufnahme.setToCurrentDateTime();
dtTmEntlassung.setToCurrentDateTime();
}else{
} else {
dtTmAufnahme.setDateTime(null);
dtTmEntlassung.setDateTime(null);
}
@@ -272,14 +271,14 @@ public class FallController {
fallFallart.setValue(null);
}

private void copyFieldDataIntoFall(Fall fall){
private void copyFieldDataIntoFall(Fall fall) {
fall.setPatient(mainController.getPatientTablesController().getSelectedPatient());
fall.setAufnahmeDatum(dtTmAufnahme.getDateTime());
fall.setEntlassungsDatum(dtTmEntlassung.getDateTime());
if(fallSelbsteinweisung.isSelected()) {
if (fallSelbsteinweisung.isSelected()) {
fall.setSelbsteinweisung(true);
fall.setEinweisenderArzt(null);
}else{
} else {
fall.setEinweisenderArzt(fallEinweisenderArzt.getText());
fall.setSelbsteinweisung(false);
}
@@ -292,12 +291,11 @@ public class FallController {
}



//fall.setVorstellDatum(); //TODO
}

private void copyFallDataIntoField(Fall fall){
if(fall==null){
private void copyFallDataIntoField(Fall fall) {
if (fall == null) {
System.out.println("copyFallDataIntoFiled - Fall ist null");
clearFields();
return;
@@ -308,9 +306,9 @@ public class FallController {

fallPatID.setText(fallProperty.get().getPatient() + ""); //(fall.getPatient().getVorname()+" "+fall.getPatient().getNachname()); //TODO

fallCreateTime.setText(fall.getErstellDatumZeit() !=null ? fall.getErstellDatumZeit().toString():"");
fallCreateTime.setText(fall.getErstellDatumZeit() != null ? fall.getErstellDatumZeit().toString() : "");
fallCreator.setText(Integer.toString(fall.getErsteller()));
fallEditTime.setText(fall.getBearbeitetDatumZeit()!=null? fall.getBearbeitetDatumZeit().toString():"");
fallEditTime.setText(fall.getBearbeitetDatumZeit() != null ? fall.getBearbeitetDatumZeit().toString() : "");
fallEditor.setText(Integer.toString(fall.getBearbeiter()));

fallEinweisenderArzt.setText(fall.getEinweisenderArzt());
@@ -324,7 +322,7 @@ public class FallController {
fallFallart.setValue(fall.getFallArt());
}

private void copyHauptdiagnoseToComboBox(Fall fall){
private void copyHauptdiagnoseToComboBox(Fall fall) {
if (fallHauptdiagnose.getItems() == null
|| fall == null) {
fallHauptdiagnose.setValue(null);
@@ -333,11 +331,11 @@ public class FallController {
System.out.println("Suche Diagnose...");

for (Diagnose diagnose : fallHauptdiagnose.getItems()) {
System.out.println(diagnose.getDiagID()+"="+fall.getHauptdiagnoseId());
System.out.println(diagnose.getDiagID() + "=" + fall.getHauptdiagnoseId());
if (diagnose.getDiagID() == fall.getHauptdiagnoseId()) {
fallHauptdiagnose.getSelectionModel().select(diagnose);
fallHauptdiagnose.getSelectionModel().select(diagnose);
System.out.println("Diagnose wiedergefunden!!");
return;
return;
}
}
}
@@ -347,5 +345,4 @@ public class FallController {
}



}

+ 11
- 16
src/main/java/de/uniluebeck/mi/projmi6/controller/LogController.java View File

@@ -23,7 +23,7 @@ public class LogController {
TableView<HL7LogEntry> tblLog;

@FXML
TableColumn<HL7LogEntry, String> colLogIp, colLogMessage;
TableColumn<HL7LogEntry, String> colLogIp, colLogMessage;

@FXML
TableColumn<HL7LogEntry, LocalDateTime> colLogTime;
@@ -34,28 +34,28 @@ public class LogController {

@FXML
Button btnRefresh;


private Task<List<HL7LogEntry>> loadLogEntryTask = null;

public LogController(MainController mainController) {
this.mainController = mainController;
}

@FXML
private void initialize(){
private void initialize() {
initColumns();
refreshLogFromDb();
}

private void initColumns(){
private void initColumns() {
colLogDirection.setCellValueFactory(new PropertyValueFactory<HL7LogEntry, HL7LogEntry.Direction>("direction"));
colLogIp.setCellValueFactory(new PropertyValueFactory<HL7LogEntry, String>("source"));
colLogTime.setCellValueFactory(new PropertyValueFactory<HL7LogEntry, LocalDateTime>("timestamp"));
colLogMessage.setCellValueFactory(new PropertyValueFactory<HL7LogEntry, String>("message"));

colLogMessage.setCellFactory(column -> {
return new TableCell<HL7LogEntry, String>(){
return new TableCell<HL7LogEntry, String>() {
private TextArea textArea = new TextArea();

{
textArea.setEditable(false);
textArea.setPrefRowCount(5);
@@ -65,7 +65,7 @@ public class LogController {
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
this.setText(null);
if(item == null || empty){
if (item == null || empty) {
this.setGraphic(null);
return;
}
@@ -77,10 +77,7 @@ public class LogController {
});
}


private Task<List<HL7LogEntry>> loadLogEntryTask = null;

public void refreshLogFromDb(){
public void refreshLogFromDb() {
if (this.loadLogEntryTask != null && this.loadLogEntryTask.isRunning()) {
return;
}
@@ -92,11 +89,11 @@ public class LogController {

tblLog.setPlaceholder(new Text("Liste wird geladen..."));

loadLogEntryTask= new Task<List<HL7LogEntry>>() {
loadLogEntryTask = new Task<List<HL7LogEntry>>() {

@Override
protected List<HL7LogEntry> call() throws Exception {
return FXCollections.<HL7LogEntry>observableArrayList(DBHandler.getLastHL7LogEntries());
return FXCollections.observableArrayList(DBHandler.getLastHL7LogEntries());
}

@Override
@@ -126,11 +123,9 @@ public class LogController {


@FXML
private void clickedRefresh(){
private void clickedRefresh() {
refreshLogFromDb();
}




}

+ 28
- 52
src/main/java/de/uniluebeck/mi/projmi6/controller/MainController.java View File

@@ -2,11 +2,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.MessageIcon;
import javafx.beans.binding.Bindings;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ChangeListener;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.concurrent.Task;
@@ -16,11 +12,7 @@ import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.util.Callback;

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ThreadFactory;

public class MainController {

@@ -78,14 +70,19 @@ public class MainController {
return stationsHistorieController;
} else if (clazz.equals(LogController.class)) {
return logController;
}else if(clazz.equals(MessageController.class)){
return messageController;
} else if (clazz.equals(MessageController.class)) {
return messageController;
} else {
System.err.println("Keine Controller-Klasse des Typs " + clazz + " gefunden!!!");
return null;
}

};
private int fallIdToShow = -1;
@FXML
private Label lvFallPlaceholder;
private Task<List<Fall>> loadFallTask = null;
private Task<Void> loadCaseData = null;

public MainController() {
fallController = new FallController(this);
@@ -98,7 +95,6 @@ public class MainController {
messageController = new MessageController(this);
}


public Stammdaten getStammdaten() {
return stammdaten;
}
@@ -107,7 +103,6 @@ public class MainController {
return controllerFactory;
}


public FallController getFallController() {
return fallController;
}
@@ -128,12 +123,12 @@ public class MainController {
return untersuchungenController;
}

public MessageController getMessageController(){
public MessageController getMessageController() {
return messageController;
}

public LogController getLogController(){
return logController;
public LogController getLogController() {
return logController;
}

public void increaseParallelTaskCount() {
@@ -151,12 +146,9 @@ public class MainController {
}
}


private int fallIdToShow = -1;

public void selectPatientAndFallId(Patient patient, int fallId){
if(patientTablesController.getSelectedPatient()==patient
&& !loadFallTask.isRunning()){
public void selectPatientAndFallId(Patient patient, int fallId) {
if (patientTablesController.getSelectedPatient() == patient
&& !loadFallTask.isRunning()) {
selectFallById(fallId);
return;
}
@@ -165,13 +157,13 @@ public class MainController {
patientTablesController.selectPatient(patient);
}

private void selectFallById(int id){
if(lvFall.getItems() == null){
private void selectFallById(int id) {
if (lvFall.getItems() == null) {
return;
}

for(Fall fall: lvFall.getItems()){
if(fall.getFallID()== id ){
for (Fall fall : lvFall.getItems()) {
if (fall.getFallID() == id) {
lvFall.getSelectionModel().select(fall);
return;
}
@@ -180,15 +172,6 @@ public class MainController {

}



@FXML
private Label lvFallPlaceholder;


private Task<List<Fall>> loadFallTask = null;


public void refreshCasesFromDb(Patient patient) {
lvFall.setItems(null); //clear list

@@ -218,7 +201,7 @@ public class MainController {
lvFall.setItems(FXCollections.observableArrayList(getValue()));
decreaseParallelTaskCount();

if(fallIdToShow!=-1){
if (fallIdToShow != -1) {
selectFallById(fallIdToShow);
fallIdToShow = -1;
}
@@ -246,7 +229,6 @@ public class MainController {
thread.start();
}


@FXML
private void initialize() {
//Init user data.
@@ -299,12 +281,7 @@ public class MainController {

}

private Task<Void> loadCaseData = null;




private void refreshCaseData(Fall fall){
private void refreshCaseData(Fall fall) {
if (loadCaseData != null && loadCaseData.isRunning()) {
loadCaseData.cancel();
}
@@ -382,7 +359,7 @@ public class MainController {
}


public void refreshCaseData(){
public void refreshCaseData() {
refreshCaseData(lvFall.getSelectionModel().getSelectedItem());
}

@@ -400,19 +377,14 @@ public class MainController {
}


public Fall getFall(){
public Fall getFall() {
return lvFall.getSelectionModel().getSelectedItem();
}

public ReadOnlyObjectProperty<Fall> fallProperty(){
return lvFall.getSelectionModel().selectedItemProperty();
public ReadOnlyObjectProperty<Fall> fallProperty() {
return lvFall.getSelectionModel().selectedItemProperty();
}


public enum TabName {
OVERVIEW, DIAGNOSE, UNTERSUCHUNG, STATIONSHISTORIE;
}

public void lockForEdit(TabName exclude) {
tabFallDiagnose.setDisable(true);
tabFallUntersuchungen.setDisable(true);
@@ -455,11 +427,15 @@ public enum TabName {
}

public Mitarbeiter getCurrentMitarbeiter() {
return cmbUserChoose==null?null:cmbUserChoose.getValue();
return cmbUserChoose == null ? null : cmbUserChoose.getValue();
}

public ReadOnlyObjectProperty<Mitarbeiter> currentMitarbeiterProperty() {
return cmbUserChoose.valueProperty();
}

public enum TabName {
OVERVIEW, DIAGNOSE, UNTERSUCHUNG, STATIONSHISTORIE
}

}

+ 6
- 13
src/main/java/de/uniluebeck/mi/projmi6/controller/MessageController.java View File

@@ -1,12 +1,9 @@
package de.uniluebeck.mi.projmi6.controller;

import de.uniluebeck.mi.projmi6.model.Fall;
import de.uniluebeck.mi.projmi6.model.HL7Message;
import de.uniluebeck.mi.projmi6.model.Patient;
import de.uniluebeck.mi.projmi6.view.MessageIcon;
import javafx.beans.property.SimpleListProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
@@ -16,36 +13,32 @@ import javafx.stage.Modality;
import javafx.stage.Stage;

import java.io.IOException;
import java.time.LocalDateTime;

/**
* Created by Johannes on 21/11/2015.
*/
public class MessageController {
final MainController mainController;
private final SimpleListProperty<HL7Message> messages = new SimpleListProperty(FXCollections.observableArrayList());
@FXML
private MessageIcon messageIcon;

private final SimpleListProperty<HL7Message> messages = new SimpleListProperty(FXCollections.observableArrayList());



public MessageController(MainController mainController){
public MessageController(MainController mainController) {
this.mainController = mainController;
}

@FXML
private void initialize(){
private void initialize() {
messageIcon.messageCountProperty().bind(messages.sizeProperty());
}

@FXML
private void onMessageIconClicked(){
private void onMessageIconClicked() {
showMessageList();
}

private void showMessageList(){
private void showMessageList() {
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getClassLoader().getResource("message_list.fxml"));
MessageListController messageListController = new MessageListController(messages, mainController);
@@ -71,7 +64,7 @@ public class MessageController {
}


public void addMessage(HL7Message message){
public void addMessage(HL7Message message) {
messages.add(message);
mainController.getLogController().refreshLogFromDb();
}


+ 16
- 19
src/main/java/de/uniluebeck/mi/projmi6/controller/MessageListController.java View File

@@ -3,9 +3,9 @@ package de.uniluebeck.mi.projmi6.controller;
/**
* Created by Johannes on 21/11/2015.
*/

import de.uniluebeck.mi.projmi6.model.HL7Message;
import javafx.beans.property.SimpleListProperty;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
@@ -17,38 +17,35 @@ public class MessageListController {

private final SimpleListProperty<HL7Message> messages;
private final MainController mainController;
@FXML
private ListView<HL7Message> lvMessages;
@FXML
private Button btnShow;
@FXML
private Button btnRemove;

public MessageListController(SimpleListProperty<HL7Message> messages, MainController mainController){
public MessageListController(SimpleListProperty<HL7Message> messages, MainController mainController) {
this.messages = messages;
this.mainController = mainController;
}

@FXML
private void initialize(){
private void initialize() {
lvMessages.setItems(messages);
btnShow.disableProperty().bind(lvMessages.getSelectionModel().selectedItemProperty().isNull());
btnRemove.disableProperty().bind(lvMessages.getSelectionModel().selectedItemProperty().isNull());

messages.sizeProperty().addListener((observable, oldValue, newValue) -> {
if(messages.getSize()<=0){
((Stage)lvMessages.getScene().getWindow()).close();
if (messages.getSize() <= 0) {
((Stage) lvMessages.getScene().getWindow()).close();
}
});
}

@FXML
private ListView<HL7Message> lvMessages;

@FXML
private Button btnShow;

@FXML
private Button btnRemove;

@FXML
void clickedRemove() {
HL7Message message = lvMessages.getSelectionModel().getSelectedItem();
if(message==null){
if (message == null) {
return;
}
messages.remove(message);
@@ -57,12 +54,12 @@ public class MessageListController {
@FXML
void clickedShow() {
HL7Message message = lvMessages.getSelectionModel().getSelectedItem();
if(message==null){
if (message == null) {
return;
}
messages.remove(message);

if(message.isFailed()){
if (message.isFailed()) {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Nachricht konnte nicht verarbeitet werden");
alert.setHeaderText("Die Nachricht konnte nicht verarbeitet werden");
@@ -71,9 +68,9 @@ public class MessageListController {
alert.initModality(Modality.APPLICATION_MODAL);

alert.showAndWait();
}else{
} else {
mainController.selectPatientAndFallId(message.getPatient(), message.getFallId());
((Stage)lvMessages.getScene().getWindow()).close();
((Stage) lvMessages.getScene().getWindow()).close();
}

}


+ 5
- 8
src/main/java/de/uniluebeck/mi/projmi6/controller/PatientTablesController.java View File

@@ -136,8 +136,7 @@ public class PatientTablesController {
return null;
} else {
int selectedPatId = tblStationOverview.getSelectionModel().getSelectedItem().getPatId();
Patient selectedPatient = tblPatientOverview.getItems().stream().filter(p -> p.getPatID() == selectedPatId).findFirst().orElse(null);
return selectedPatient;
return tblPatientOverview.getItems().stream().filter(p -> p.getPatID() == selectedPatId).findFirst().orElse(null);
}
}, tblPatientOverview.getSelectionModel().selectedItemProperty(),
tblStationOverview.getSelectionModel().selectedItemProperty(),
@@ -223,7 +222,7 @@ public class PatientTablesController {
stage.show();
}

public void selectPatient(Patient patient){
public void selectPatient(Patient patient) {
patientOverviewTabPane.getSelectionModel().select(0); // Select first tab
tblPatientOverview.getSelectionModel().select(patient);
}
@@ -246,7 +245,7 @@ public class PatientTablesController {

@Override
protected List<Patient> call() throws Exception {
return FXCollections.<Patient>observableArrayList(DBHandler.getAllPatients());
return FXCollections.observableArrayList(DBHandler.getAllPatients());
}

@Override
@@ -294,11 +293,11 @@ public class PatientTablesController {
mainController.increaseParallelTaskCount();


Task<List<StationsUebersichtsItem>> loadStatHist = new Task<List<StationsUebersichtsItem>>() {
this.loadStationsHistorieTask = new Task<List<StationsUebersichtsItem>>() {

@Override
protected List<StationsUebersichtsItem> call() throws Exception {
return FXCollections.<StationsUebersichtsItem>observableArrayList(
return FXCollections.observableArrayList(
DBHandler.getStationsUebersichtsItems(cmbStationenFilter.getValue().getStation()));
}

@@ -330,7 +329,6 @@ public class PatientTablesController {
}
}
};
this.loadStationsHistorieTask = loadStatHist;

Thread thread = new Thread(loadStationsHistorieTask);
thread.setDaemon(true);
@@ -351,5 +349,4 @@ public class PatientTablesController {
}



}

+ 39
- 40
src/main/java/de/uniluebeck/mi/projmi6/controller/SettingsController.java View File

@@ -20,19 +20,17 @@ import java.util.regex.Pattern;
public class SettingsController {

/**
* A pointer to the applications main controller
* Regex for the {@link #validateIpString(String)} method.
*/
private MainController mainController;

private static final Pattern PATTERN = Pattern.compile(
"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");
/**
* Constructor - The object is generated in the MainController.
* @param mainController The MainController that generates this object.
* A pointer to the applications main controller
*/
public SettingsController (MainController mainController){
this.mainController = mainController;

}

private MainController mainController;
/**
* The button that for saving the data in the text fields.
*/
@@ -48,14 +46,34 @@ public class SettingsController {


/**
* Constructor - The object is generated in the MainController.
*
* @param mainController The MainController that generates this object.
*/
public SettingsController(MainController mainController) {
this.mainController = mainController;

}

/**
* Checks if the given string is a ip address string.
*
* @param ip The string to be validated.
* @return true if ip is a valid ip address, otherwise false
*/
public static boolean validateIpString(final String ip) {
return PATTERN.matcher(ip).matches();
}

/**
* initialize()-method for the FXMLLoader.
*/
@FXML
private void initialize(){
private void initialize() {
opsServerIp.setText(Main.OPS_IP);
opsServerPort.setText(Integer.toString(Main.OPS_PORT));
opsServerSave.setOnAction(event -> {
if(validateData(opsServerIp.getText(), opsServerPort.getText())){
if (validateData(opsServerIp.getText(), opsServerPort.getText())) {
Main.OPS_IP = opsServerIp.getText();
Main.OPS_PORT = Integer.parseInt(opsServerPort.getText());

@@ -71,7 +89,8 @@ public class SettingsController {

/**
* Validation error dialog.
* @param title The dialogs header text.
*
* @param title The dialogs header text.
* @param message The dialogs content text.
*/
private void showMessage(String title, String message) {
@@ -83,28 +102,27 @@ public class SettingsController {
alert.showAndWait();
}


/**
* Checks if the OPS-servers IP address and portnumber are valid,
* shows error messages if not.
*
* @param serverIp The servers ip address as string
* @param portStr The port number as string
* @param portStr The port number as string
* @return true if serverIp is a valid ip and portStr a valid port number
*/
private boolean validateData(String serverIp, String portStr){
private boolean validateData(String serverIp, String portStr) {
int port = -1;
try{
try {
port = Integer.parseInt(portStr);
}catch (Exception e){
} catch (Exception e) {
showMessage("Portnummer ist nicht valide!", "Die Portnummer muss eine Zahl zwischen 1024 und 65535 sein!");
return false;
return false;
}
if(!(port >= 1024 && port <= 65535)){
if (!(port >= 1024 && port <= 65535)) {
showMessage("Portnummer ist nicht valide!", "Die Portnummer muss eine Zahl zwischen 1024 und 65535 sein!");
return false;
}
if(!validateIpString(serverIp)){
if (!validateIpString(serverIp)) {
showMessage("IP-Adresse nicht valide!", "Die IP-Adresse ist nicht g\u00fcltig!");
return false;
}
@@ -112,24 +130,5 @@ public class SettingsController {
return true;
}

/**
* Regex for the {@link #validateIpString(String)} method.
*/
private static final Pattern PATTERN = Pattern.compile(
"^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
"([01]?\\d\\d?|2[0-4]\\d|25[0-5])$");

/**
* Checks if the given string is a ip address string.
*
* @param ip The string to be validated.
* @return true if ip is a valid ip address, otherwise false
*/
public static boolean validateIpString(final String ip) {
return PATTERN.matcher(ip).matches();
}

}


+ 37
- 40
src/main/java/de/uniluebeck/mi/projmi6/controller/StationsHistorieController.java View File

@@ -26,14 +26,14 @@ import java.util.stream.Collectors;

/**
* The controller class for the hospital ward history.
*
* <p>
* Created by Johannes on 12.11.15.
*/
public class StationsHistorieController {

private final SimpleObjectProperty<State> state = new SimpleObjectProperty<>(State.VIEW);
@FXML
private Button btnStatHistAbort;
private final SimpleObjectProperty<State> state = new SimpleObjectProperty<>(State.VIEW);
@FXML
private GridPane fields;
@FXML
@@ -46,15 +46,15 @@ public class StationsHistorieController {
private StationsHistorie stationsHistorieSelected = null;
private MainController mainController;
@FXML
private TableView<StationsHistorie>tblStationsHistorie;
private TableView<StationsHistorie> tblStationsHistorie;
@FXML
private Button btnStatHistCancel, btnStatHistSave;
@FXML
private Label statHistCreator, statHistCreateTime, statHistEditor, statHistEditTime;
@FXML
private TableColumn<StationsHistorie,String> colStatHistStation;
private TableColumn<StationsHistorie, String> colStatHistStation;
@FXML
private TableColumn<StationsHistorie,LocalDate> colStatHistAufnahmeDatum, colStatHistEntlassungsDatum;
private TableColumn<StationsHistorie, LocalDate> colStatHistAufnahmeDatum, colStatHistEntlassungsDatum;
@FXML
private DateTimePicker dtTmAufnahme, dtTmEntlassung;
@FXML
@@ -112,9 +112,9 @@ public class StationsHistorieController {
});
}

private void initButtons(){
private void initButtons() {
// btnStatHistCancel.visibleProperty().bind(state.isEqualTo(State.VIEW).and(tblStationsHistorie.getSelectionModel().selectedItemProperty().isNotNull()));
// btnStatHistCancel.managedProperty().bind(btnStatHistCancel.visibleProperty());
// btnStatHistCancel.managedProperty().bind(btnStatHistCancel.visibleProperty());

btnStatHistSave.visibleProperty().bind(state.isEqualTo(State.VIEW).not());
btnStatHistSave.managedProperty().bind(btnStatHistSave.visibleProperty());
@@ -123,18 +123,18 @@ public class StationsHistorieController {
btnStatHistAbort.managedProperty().bind(btnStatHistAbort.visibleProperty());

btnStatHistEdit.visibleProperty().bind(state.isEqualTo(State.VIEW)
.and(tblStationsHistorie.getSelectionModel().selectedItemProperty().isNotNull()));
.and(tblStationsHistorie.getSelectionModel().selectedItemProperty().isNotNull()));
btnStatHistEdit.managedProperty().bind(btnStatHistEdit.visibleProperty());

btnStatHistDelete.visibleProperty().bind(btnStatHistEdit.visibleProperty());
btnStatHistDelete.managedProperty().bind(btnStatHistDelete.visibleProperty());
}

private void initStationsFilter(){
private void initStationsFilter() {
final String any = "beliebig";

List<String> abteilungen = mainController.getStammdaten().getStationen().stream()
.map(stat->stat.getAbteilung()).distinct().collect(Collectors.toList());
.map(stat -> stat.getAbteilung()).distinct().collect(Collectors.toList());
Collections.sort(abteilungen);
cmbAbteilung.setItems(FXCollections.observableArrayList(abteilungen));
cmbAbteilung.getItems().add(0, any);
@@ -149,12 +149,11 @@ public class StationsHistorieController {
FilteredList<Station> stationenFiltered = new FilteredList<Station>(mainController.getStammdaten().getStationen());

stationenFiltered.predicateProperty().bind(Bindings.createObjectBinding(() -> {
if(cmbAbteilung.getValue()==null || cmbAbteilung.getValue().equals(any)){
return p->true;
if (cmbAbteilung.getValue() == null || cmbAbteilung.getValue().equals(any)) {
return p -> true;
}
return p -> p.getAbteilung().equals(cmbAbteilung.getValue());
},cmbAbteilung.valueProperty()));

}, cmbAbteilung.valueProperty()));


cmbStation.setItems(stationenFiltered);
@@ -173,7 +172,7 @@ public class StationsHistorieController {
if (getState() == State.CREATE) {
StationsHistorie stationsHistorie = new StationsHistorie();
copyFieldDataIntoStationsHistorie(stationsHistorie);
if(!validateData(stationsHistorie)){
if (!validateData(stationsHistorie)) {
return;
}
try {
@@ -184,7 +183,7 @@ public class StationsHistorieController {
mainController.refreshCaseData();
} else {
copyFieldDataIntoStationsHistorie(stationsHistorieSelected);
if(!validateData(stationsHistorieSelected)){
if (!validateData(stationsHistorieSelected)) {
return;
}
try {
@@ -247,32 +246,32 @@ public class StationsHistorieController {
return stationsHistorie;
}

public void setStationsHistorieSelected(StationsHistorie stationsHistorie){
this.stationsHistorieSelected=stationsHistorie;
if(stationsHistorie==null){
public void setStationsHistorieSelected(StationsHistorie stationsHistorie) {
this.stationsHistorieSelected = stationsHistorie;
if (stationsHistorie == null) {
clearFields();
}else {
} else {
copyStationsHistorieDataIntoFields();
}

}

private void initColumns(){
colStatHistStation.setCellValueFactory(new PropertyValueFactory<StationsHistorie, String>("stationKey"));
colStatHistAufnahmeDatum.setCellValueFactory(new PropertyValueFactory<StationsHistorie, LocalDate>("aufnahmeDatum"));
colStatHistEntlassungsDatum.setCellValueFactory(new PropertyValueFactory<StationsHistorie, LocalDate>("entlassungsDatum"));
private void initColumns() {
colStatHistStation.setCellValueFactory(new PropertyValueFactory<StationsHistorie, String>("stationKey"));
colStatHistAufnahmeDatum.setCellValueFactory(new PropertyValueFactory<StationsHistorie, LocalDate>("aufnahmeDatum"));
colStatHistEntlassungsDatum.setCellValueFactory(new PropertyValueFactory<StationsHistorie, LocalDate>("entlassungsDatum"));
}

private void copyStationsHistorieDataIntoFields(){
private void copyStationsHistorieDataIntoFields() {

if(stationsHistorieSelected==null){
if (stationsHistorieSelected == null) {
clearFields();
return;
}

//Setze Station im Dropdownfeld
for (Station station : cmbStation.getItems()) {
if(station.getStation().equals(stationsHistorieSelected.getStationKey())){
if (station.getStation().equals(stationsHistorieSelected.getStationKey())) {
cmbStation.getSelectionModel().select(station);
cmbAbteilung.getSelectionModel().select(station.getAbteilung());
break;
@@ -280,13 +279,11 @@ public class StationsHistorieController {
}




dtTmAufnahme.setDateTime(stationsHistorieSelected.getAufnahmeDatum());
dtTmEntlassung.setDateTime(stationsHistorieSelected.getEntlassungsDatum());

statHistCreator.setText(Integer.toString(stationsHistorieSelected.getErsteller()));
if(stationsHistorieSelected.getErstellDatumZeit()!=null){
if (stationsHistorieSelected.getErstellDatumZeit() != null) {
statHistCreateTime.setText(stationsHistorieSelected.getErstellDatumZeit().toString());
}
statHistEditor.setText(Integer.toString(stationsHistorieSelected.getBearbeiter()));
@@ -295,14 +292,14 @@ public class StationsHistorieController {
}
}

private void copyFieldDataIntoStationsHistorie(StationsHistorie stationsHistorie){
private void copyFieldDataIntoStationsHistorie(StationsHistorie stationsHistorie) {
stationsHistorie.setAufnahmeDatum(dtTmAufnahme.getDateTime());
stationsHistorie.setEntlassungsDatum(dtTmEntlassung.getDateTime());
stationsHistorie.setStation(cmbStation.getValue());
stationsHistorie.setFallID(mainController.getFallController().getFall().getFallID());
if(cmbStation.getValue()!= null){
if (cmbStation.getValue() != null) {
stationsHistorie.setStationKey(cmbStation.getValue().getStation());
}else{
} else {
stationsHistorie.setStationKey(null);
}
stationsHistorie.setErsteller(mainController.getCurrentMitarbeiter().getMitarbID());
@@ -320,17 +317,17 @@ public class StationsHistorieController {
}


private boolean validateData(StationsHistorie stationsHistorie){
if(stationsHistorie.getStationKey()==null){
private boolean validateData(StationsHistorie stationsHistorie) {
if (stationsHistorie.getStationKey() == null) {
showMessage("Keine Station ausgew\00e4hlt!", "Bitte Station und nicht nur Abteilung ausw\00e4hlen!");
return false;
}
if(stationsHistorie.getAufnahmeDatum()==null){
if (stationsHistorie.getAufnahmeDatum() == null) {
showMessage("Aufnahmedatum fehlt!", "Bitte den Beginn des Stationsaufenthalts angeben!");
return false;
return false;
}
if(stationsHistorie.getEntlassungsDatum() != null &&
stationsHistorie.getAufnahmeDatum().isAfter(stationsHistorie.getEntlassungsDatum())){
if (stationsHistorie.getEntlassungsDatum() != null &&
stationsHistorie.getAufnahmeDatum().isAfter(stationsHistorie.getEntlassungsDatum())) {
showMessage("Aufnahmedatum liegt hinter Entlassungsdatum!", "Bitte die eingegebenen Daten nocheinmal kontrollieren!");
return false;
}
@@ -339,7 +336,7 @@ public class StationsHistorieController {
return true;
}

private void clearFields(){
private void clearFields() {

statHistCreateTime.setText("");
statHistCreator.setText("");


+ 52
- 61
src/main/java/de/uniluebeck/mi/projmi6/controller/UntersuchungenController.java View File

@@ -13,7 +13,6 @@ import de.uniluebeck.mi.projmi6.view.SelectKeyComboBoxListener;
import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.scene.layout.GridPane;
@@ -28,65 +27,33 @@ import java.sql.SQLException;
*/
public class UntersuchungenController {

/**
* The states the controller might be.
*/
public enum State {
CREATE, EDIT, VIEW
}

private final SimpleObjectProperty<State> state = new SimpleObjectProperty<>(State.VIEW);


/**
* A getter for the {@link #stateProperty()}.
* @return The controllers current state
*/
public State getState() {
return state.get();
}

/**
* A property for the state of the controller/UI.
* @return
*/
public ReadOnlyObjectProperty<State> stateProperty() {
return state;
}

private final SimpleObjectProperty<State> state = new SimpleObjectProperty<>(State.VIEW);
/**
* The list of examinations that is shown in the views that belong to the controller.
*/
private SimpleObjectProperty<ObservableList<Untersuchung>> untersuchungen = new SimpleObjectProperty<>();

/**
* A pointer to the main controller.
*/
private MainController mainController;

@FXML
private Button btnUntsCancel, btnUntsCreate, btnUntsSave, btnUntsAbort;

@FXML
private DateTimePicker dtTmUntersuchungszeitpunkt;

@FXML
private Label untsChanger, untsCreator, untsChangeTime, untsCreateTime;

private Label untsChanger, untsCreator, untsChangeTime, untsCreateTime;
@FXML
private ListView<Untersuchung> untsList;

@FXML
private ComboBox<OpsCode> untsOpsCode;

@FXML
private GridPane fields;

@FXML
private ComboBox<Mitarbeiter> untsArzt;

/**
* Constructor for the mainController.
*
* @param mainController The MainController that created this instance.
*/
public UntersuchungenController(MainController mainController) {
@@ -94,16 +61,35 @@ public class UntersuchungenController {
}

/**
* A getter for the {@link #stateProperty()}.
*
* @return The controllers current state
*/
public State getState() {
return state.get();
}

/**
* A property for the state of the controller/UI.
*
* @return
*/
public ReadOnlyObjectProperty<State> stateProperty() {
return state;
}

/**
* A getter for the {@link #untersuchungenProperty()}. Might be null.
*
* @return The list of examinations that are shown in this view.
*/
public ObservableList<Untersuchung> getUntersuchungen() {
return untersuchungen.get();
}


/**
* A setter for the {@link #untersuchungenProperty()}. Might be null.
*
* @param untersuchungen The ObservableList to set.
*/
public void setUntersuchungen(ObservableList<Untersuchung> untersuchungen) {
@@ -120,18 +106,17 @@ public class UntersuchungenController {
/**
* Initializes the comboboxes with values.
*/
private void initComboBoxes(){
private void initComboBoxes() {
untsOpsCode.itemsProperty().bind(mainController.getStammdaten().opsCodesProperty());
new SelectKeyComboBoxListener(untsOpsCode);

untsArzt.itemsProperty().bind(mainController.getStammdaten().mitarbeiterProperty());
}


/**
* Binds the buttons visibility to the controllers current state.
*/
private void initButtons(){
private void initButtons() {
btnUntsCreate.disableProperty().bind(mainController.fallProperty().isNull());

btnUntsCancel.managedProperty().bind(state.isEqualTo(State.VIEW)
@@ -148,29 +133,29 @@ public class UntersuchungenController {
/**
* Set up data, disable property and listener.
*/
private void initList(){
private void initList() {
untsList.itemsProperty().bind(untersuchungen);
untsList.getSelectionModel().selectedItemProperty().addListener(
(observable, oldVal, newVal) -> copyUntersuchungDataIntoFields());

untsList.disableProperty().bind(state.isNotEqualTo(State.VIEW));
untsList.setCellFactory(lv -> {
return new ListCell<Untersuchung>(){
return new ListCell<Untersuchung>() {
@Override
protected void updateItem(Untersuchung item, boolean empty) {
super.updateItem(item, empty);
if(item==null||empty){
if (item == null || empty) {
setText(null);
setGraphic(null);
return;
}
setText(item.toString());
if(item.getStorniert()){
if (item.getStorniert()) {
setTextFill(Color.GRAY);
Text text = new Text("<storniert> ");
text.setFill(Color.RED);
setGraphic(text);
}else{
} else {
setTextFill(Color.BLACK);
setGraphic(null);
}
@@ -183,7 +168,7 @@ public class UntersuchungenController {
* FXMLLoaders init method.
*/
@FXML
void initialize(){
void initialize() {
//Clear fields on startup
copyUntersuchungDataIntoFields();

@@ -194,9 +179,9 @@ public class UntersuchungenController {
fields.disableProperty().bind(state.isEqualTo(State.VIEW));

state.addListener((observable, oldValue, newValue) -> {
if(newValue==State.VIEW){
if (newValue == State.VIEW) {
mainController.unlockFromEdit();
}else{
} else {
mainController.lockForEdit(MainController.TabName.UNTERSUCHUNG);
}
});
@@ -218,23 +203,23 @@ public class UntersuchungenController {
@FXML
private void clickedUntsCancel() {
Untersuchung untersuchung = untsList.getSelectionModel().getSelectedItem();
if(untersuchung==null) {
if (untersuchung == null) {
return;
}
untersuchung.setStorniert(true);
try {
DBHandler.setUntersuchung(untersuchung, mainController.getCurrentMitarbeiter().getMitarbID(), true);
}catch (Exception e){
} catch (Exception e) {
e.printStackTrace();
}
mainController.refreshCaseData();
mainController.refreshCaseData();
}

/**
* Handler for the abort button. Aborts editing/creating.
*/
@FXML
private void clickedUntsAbort(){
private void clickedUntsAbort() {
state.set(State.VIEW);
copyUntersuchungDataIntoFields();
}
@@ -253,20 +238,19 @@ public class UntersuchungenController {
} catch (SQLException e) {
e.printStackTrace();
}
} else if(state.get()==State.EDIT){
} else if (state.get() == State.EDIT) {
Untersuchung untersuchung = untsList.getSelectionModel().getSelectedItem();
copyFieldDataIntoUntersuchung(untersuchung);
//...
}
}


/**
* Copy the currently selected Untersuchung object into the fields on the right.
*/
private void copyUntersuchungDataIntoFields(){
private void copyUntersuchungDataIntoFields() {
Untersuchung untersuchung = untsList.getSelectionModel().getSelectedItem();
if(untersuchung==null){
if (untersuchung == null) {
clearFields();
return;
}
@@ -283,18 +267,19 @@ public class UntersuchungenController {

/**
* Copies the values from the TextFields and ComboBoxes into the given Untersuchung object.
*
* @param untersuchung The object the data will be copied into.
*/
private void copyFieldDataIntoUntersuchung(Untersuchung untersuchung){
untersuchung.setOpscode(untsOpsCode.getValue());
untersuchung.setDurchfuehrenderArzt(untsArzt.getValue());
untersuchung.setUntersuchungsdatum(dtTmUntersuchungszeitpunkt.getDateTime());
private void copyFieldDataIntoUntersuchung(Untersuchung untersuchung) {
untersuchung.setOpscode(untsOpsCode.getValue());
untersuchung.setDurchfuehrenderArzt(untsArzt.getValue());
untersuchung.setUntersuchungsdatum(dtTmUntersuchungszeitpunkt.getDateTime());
}

/**
* Clears the TextFields.
*/
private void clearFields(){
private void clearFields() {
untsCreateTime.setText("");
untsCreator.setText("");
untsChangeTime.setText("");
@@ -306,6 +291,12 @@ public class UntersuchungenController {

}

/**
* The states the controller might be.
*/
public enum State {
CREATE, EDIT, VIEW
}


}


+ 1
- 7
src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Sender.java View File

@@ -140,13 +140,7 @@ public class HL7Sender {
response = initiator.sendAndReceive(adt);
Thread.sleep(5000);
}
} catch (HL7Exception e) {
e.printStackTrace();
} catch (LLPException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
} catch (HL7Exception | LLPException | IOException | InterruptedException e) {
e.printStackTrace();
}



+ 2
- 4
src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Server.java View File

@@ -4,7 +4,6 @@ import ca.uhn.hl7v2.DefaultHapiContext;
import ca.uhn.hl7v2.HapiContext;
import ca.uhn.hl7v2.app.HL7Service;
import ca.uhn.hl7v2.protocol.ReceivingApplication;
import de.uniluebeck.mi.projmi6.controller.MainController;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
@@ -16,15 +15,14 @@ import java.util.concurrent.TimeUnit;
public class HL7Server {

private static final int PORT = 1111;
private final HapiContext context;
private final HL7Service server;
private final ThreadPoolExecutor executor;

public HL7Server(MainController mainctrl) throws InterruptedException {
public HL7Server() {
executor = new ThreadPoolExecutor(10, 100, 30, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(100));
executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());

context = new DefaultHapiContext();
HapiContext context = new DefaultHapiContext();
context.setExecutorService(executor);
server = context.newServer(PORT, false);



+ 4
- 4
src/main/java/de/uniluebeck/mi/projmi6/model/DiagArt.java View File

@@ -5,10 +5,10 @@ package de.uniluebeck.mi.projmi6.model;
*/
public enum DiagArt {

VERDACHT(1,"Verdacht"),
EINWEISUNG(2,"Einweisung"),
VERDACHT(1, "Verdacht"),
EINWEISUNG(2, "Einweisung"),
OPDIAG(3, "OP-Diag"),
ENTLASSUNG(4,"Entlassung");
ENTLASSUNG(4, "Entlassung");

private final int id;
private final String diagArt;
@@ -18,7 +18,7 @@ public enum DiagArt {
this.diagArt = diagArt;
}

public static DiagArt parseInt(final int id){
public static DiagArt parseInt(final int id) {
switch (id) {
case 1:
return VERDACHT;


+ 5
- 5
src/main/java/de/uniluebeck/mi/projmi6/model/Diagnose.java View File

@@ -42,19 +42,19 @@ public class Diagnose extends Version {
return freiText.get();
}

public void setFreiText(String freiText) {
this.freiText.set(freiText);
}

@Override
public String toString() {
return icd10code+"";
return icd10code + "";
}

public SimpleStringProperty freiTextProperty() {
return freiText;
}

public void setFreiText(String freiText) {
this.freiText.set(freiText);
}

public DiagArt getDiagArt() {
return diagArt;
}


+ 20
- 21
src/main/java/de/uniluebeck/mi/projmi6/model/Fachrichtung.java View File

@@ -2,7 +2,6 @@ package de.uniluebeck.mi.projmi6.model;

import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import sun.java2d.pipe.SpanShapeRenderer;

/**
* Created by 630030 on 12.11.15.
@@ -19,59 +18,59 @@ public class Fachrichtung {
return abteilung.get();
}

public SimpleStringProperty abteilungProperty() {
return abteilung;
}

public void setAbteilung(String abteilung) {
this.abteilung.set(abteilung);
}

public int getAbteilungstyp() {
return abteilungstyp.get();
public SimpleStringProperty abteilungProperty() {
return abteilung;
}

public SimpleIntegerProperty abteilungstypProperty() {
return abteilungstyp;
public int getAbteilungstyp() {
return abteilungstyp.get();
}

public void setAbteilungstyp(int abteilungstyp) {
this.abteilungstyp.set(abteilungstyp);
}

public String getBezeichnung() {
return bezeichnung.get();
public SimpleIntegerProperty abteilungstypProperty() {
return abteilungstyp;
}

public SimpleStringProperty bezeichnungProperty() {
return bezeichnung;
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 getBezeichnungLang2() {
return bezeichnungLang2.get();
public SimpleStringProperty bezeichnungLangProperty() {
return bezeichnungLang;
}

public SimpleStringProperty bezeichnungLang2Property() {
return bezeichnungLang2;
public String getBezeichnungLang2() {
return bezeichnungLang2.get();
}

public void setBezeichnungLang2(String bezeichnungLang2) {
this.bezeichnungLang2.set(bezeichnungLang2);
}

public SimpleStringProperty bezeichnungLang2Property() {
return bezeichnungLang2;
}
}

+ 10
- 11
src/main/java/de/uniluebeck/mi/projmi6/model/Fall.java View File

@@ -28,28 +28,27 @@ public class Fall extends Version {
private SimpleObjectProperty<LocalDateTime> entlassungsDatum = new SimpleObjectProperty<>(this, "entlassungsDatum");
private SimpleIntegerProperty fallID = new SimpleIntegerProperty(this, "fallid");

public LocalDateTime getVorstellDatum() {
return vorstellDatum.get();
}

public void setVorstellDatum(LocalDateTime vorstellDatum) {
this.vorstellDatum.set(vorstellDatum);

}



public LocalDateTime getVorstellDatum() {
return vorstellDatum.get();
}

public int getHauptdiagnoseId() {
return hauptdiagnoseId.get();
}

public void setHauptdiagnoseId(int hauptdiagnoseId) {
this.hauptdiagnoseId.set(hauptdiagnoseId);
}

public SimpleIntegerProperty hauptdiagnoseIdProperty() {
return hauptdiagnoseId;
}

public void setHauptdiagnoseId(int hauptdiagnoseId) {
this.hauptdiagnoseId.set(hauptdiagnoseId);
}
public SimpleObjectProperty<LocalDateTime> vorstellDatumProperty() {
return vorstellDatum;
}
@@ -124,9 +123,9 @@ public class Fall extends Version {

@Override
public String toString() {
if(getAufnahmeDatum()!=null){
if (getAufnahmeDatum() != null) {
return getAufnahmeDatum().toLocalDate().toString();
}else{
} else {
return Integer.toString(getFallID());
}
}


+ 1
- 1
src/main/java/de/uniluebeck/mi/projmi6/model/FallArt.java View File

@@ -16,7 +16,7 @@ public enum FallArt {
this.fallArt = fallArt;
}

public static FallArt parseString (final String id){
public static FallArt parseString(final String id) {
switch (id) {
case "amb":
return AMBULANT;


+ 6
- 6
src/main/java/de/uniluebeck/mi/projmi6/model/HL7Message.java View File

@@ -26,16 +26,16 @@ public class HL7Message {
return dateTime;
}

@Override
public String toString() {
return dateTime+ " - "+(failed?"<fehlerhafte Nachricht>":
(patient!=null? patient.getNachname()+", "+patient.getVorname():""));
}

public void setDateTime(LocalDateTime dateTime) {
this.dateTime = dateTime;
}

@Override
public String toString() {
return dateTime + " - " + (failed ? "<fehlerhafte Nachricht>" :
(patient != null ? patient.getNachname() + ", " + patient.getVorname() : ""));
}

public String getMessageContent() {
return messageContent;
}


+ 3
- 6
src/main/java/de/uniluebeck/mi/projmi6/model/Icd10Code.java View File

@@ -12,7 +12,7 @@ public class Icd10Code {
private final int version;


public Icd10Code(String icd10Code, String text, int version){
public Icd10Code(String icd10Code, String text, int version) {
this.code = icd10Code;
this.text = text;
this.version = version;
@@ -32,17 +32,14 @@ public class Icd10Code {

@Override
public String toString() {
return code+" - "+ text;
return code + " - " + text;
}


public boolean isLastElementANumber() {
String lastElement = code.substring(code.length() - 1);
char[] lastEl = lastElement.toCharArray();
if (Character.isDigit(lastEl[0])) {
return true;
}
return false;
return Character.isDigit(lastEl[0]);
}

}

+ 20
- 19
src/main/java/de/uniluebeck/mi/projmi6/model/Kasse.java View File

@@ -1,4 +1,5 @@
package de.uniluebeck.mi.projmi6.model;

import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
@@ -12,12 +13,12 @@ public class Kasse extends Version {
private SimpleStringProperty name = new SimpleStringProperty(this, "name");
private SimpleBooleanProperty privat = new SimpleBooleanProperty(this, "privat");

public Kasse(){
public Kasse() {

}


public Kasse(int id, String name, String adresse, boolean privat){
public Kasse(int id, String name, String adresse, boolean privat) {
kassenID.set(id);
this.name.set(name);
this.adresse.set(adresse);
@@ -28,52 +29,52 @@ public class Kasse extends Version {
return adresse.get();
}

public SimpleStringProperty adresseProperty() {
return adresse;
}

public void setAdresse(String adresse) {
this.adresse.set(adresse);
}

public int getKassenID() {
return kassenID.get();
public SimpleStringProperty adresseProperty() {
return adresse;
}

public SimpleIntegerProperty kassenIDProperty() {
return kassenID;
public int getKassenID() {
return kassenID.get();
}

public void setKassenID(int kassenID) {
this.kassenID.set(kassenID);
}

public String getName() {
return name.get();
public SimpleIntegerProperty kassenIDProperty() {
return kassenID;
}

public SimpleStringProperty nameProperty() {
return name;
public String getName() {
return name.get();
}

public void setName(String name) {
this.name.set(name);
}

public boolean getPrivat() {
return privat.get();
public SimpleStringProperty nameProperty() {
return name;
}

public SimpleBooleanProperty privatProperty() {
return privat;
public boolean getPrivat() {
return privat.get();
}

public void setPrivat(boolean privat) {
this.privat.set(privat);
}

public SimpleBooleanProperty privatProperty() {
return privat;
}

@Override
public String toString() {
return getName() + " (" +(getPrivat()?"privat":"gesetzlich")+")" ;
return getName() + " (" + (getPrivat() ? "privat" : "gesetzlich") + ")";
}
}

+ 1
- 1
src/main/java/de/uniluebeck/mi/projmi6/model/OpsCode.java View File

@@ -11,7 +11,7 @@ public class OpsCode {

private final int version;

public OpsCode(String opsCode, String text, int version){
public OpsCode(String opsCode, String text, int version) {
this.opsCode = opsCode;
this.text = text;
this.version = version;


+ 5
- 5
src/main/java/de/uniluebeck/mi/projmi6/model/Patient.java View File

@@ -151,14 +151,14 @@ public class Patient extends Version {
return kassenID.get();
}

public SimpleIntegerProperty kassenIDProperty() {
return kassenID;
}

public void setKassenID(int kassenID) {
this.kassenID.set(kassenID);
}

public SimpleIntegerProperty kassenIDProperty() {
return kassenID;
}

public LocalDate getGeburtsdatum() {
return geburtsdatum.get();
}
@@ -235,7 +235,7 @@ public class Patient extends Version {
}

public static Geschlecht parseStringFromHL7(final String geschlecht) {
geschlecht.toLowerCase();
geschlecht.toLowerCase();
if (geschlecht.startsWith("m")) {
return MALE;
} else if (geschlecht.startsWith("f")) {


+ 4
- 7
src/main/java/de/uniluebeck/mi/projmi6/model/Stammdaten.java View File

@@ -13,22 +13,19 @@ public class Stammdaten {
private SimpleObjectProperty<ObservableList<Mitarbeiter>> mitarbeiter = new SimpleObjectProperty<>();
private SimpleObjectProperty<ObservableList<Kasse>> kassen = new SimpleObjectProperty<>();
private SimpleObjectProperty<ObservableList<Station>> stationen = new SimpleObjectProperty<>();
private SimpleObjectProperty<ObservableList<Patient>> patienten = new SimpleObjectProperty<>();

public ObservableList<Patient> getPatienten() {
return patienten.get();
}

public SimpleObjectProperty<ObservableList<Patient>> patientenProperty() {
return patienten;
}

public void setPatienten(ObservableList<Patient> patienten) {
this.patienten.set(patienten);
}

private SimpleObjectProperty<ObservableList<Patient>> patienten = new SimpleObjectProperty<>();
public SimpleObjectProperty<ObservableList<Patient>> patientenProperty() {
return patienten;
}

public ObservableList<OpsCode> getOpsCodes() {
return opsCodes.get();


+ 25
- 25
src/main/java/de/uniluebeck/mi/projmi6/model/StationsUebersichtsItem.java View File

@@ -12,7 +12,7 @@ import java.time.LocalDate;
public class StationsUebersichtsItem {
private SimpleIntegerProperty patId = new SimpleIntegerProperty(this, "patId");
private SimpleStringProperty patName = new SimpleStringProperty(this, "patName");
private SimpleObjectProperty<LocalDate> patBirthdate = new SimpleObjectProperty<>(this,"patBirthdate");
private SimpleObjectProperty<LocalDate> patBirthdate = new SimpleObjectProperty<>(this, "patBirthdate");
private SimpleIntegerProperty patAge = new SimpleIntegerProperty(this, "patAge");
private SimpleObjectProperty<LocalDate> stationAufnahme = new SimpleObjectProperty<>(this, "stationAufnahme");
private SimpleObjectProperty<LocalDate> stationEntlassung = new SimpleObjectProperty<>(this, "stationEntlassung");
@@ -23,74 +23,74 @@ public class StationsUebersichtsItem {
return patId.get();
}

public SimpleIntegerProperty patIdProperty() {
return patId;
}

public void setPatId(int patId) {
this.patId.set(patId);
}

public String getPatName() {
return patName.get();
public SimpleIntegerProperty patIdProperty() {
return patId;
}

public SimpleStringProperty patNameProperty() {
return patName;
public String getPatName() {
return patName.get();
}

public void setPatName(String patName) {
this.patName.set(patName);
}

public LocalDate getPatBirthdate() {
return patBirthdate.get();
public SimpleStringProperty patNameProperty() {
return patName;
}

public SimpleObjectProperty<LocalDate> patBirthdateProperty() {
return patBirthdate;
public LocalDate getPatBirthdate() {
return patBirthdate.get();
}

public void setPatBirthdate(LocalDate patBirthdate) {
this.patBirthdate.set(patBirthdate);
}

public int getPatAge() {
return patAge.get();
public SimpleObjectProperty<LocalDate> patBirthdateProperty() {
return patBirthdate;
}

public SimpleIntegerProperty patAgeProperty() {
return patAge;
public int getPatAge() {
return patAge.get();
}

public void setPatAge(int patAge) {
this.patAge.set(patAge);
}

public LocalDate getStationAufnahme() {
return stationAufnahme.get();
public SimpleIntegerProperty patAgeProperty() {
return patAge;
}

public SimpleObjectProperty<LocalDate> stationAufnahmeProperty() {
return stationAufnahme;
public LocalDate getStationAufnahme() {
return stationAufnahme.get();
}

public void setStationAufnahme(LocalDate stationAufnahme) {
this.stationAufnahme.set(stationAufnahme);
}

public LocalDate getStationEntlassung() {
return stationEntlassung.get();
public SimpleObjectProperty<LocalDate> stationAufnahmeProperty() {
return stationAufnahme;
}

public SimpleObjectProperty<LocalDate> stationEntlassungProperty() {
return stationEntlassung;
public LocalDate getStationEntlassung() {
return stationEntlassung.get();
}

public void setStationEntlassung(LocalDate stationEntlassung) {
this.stationEntlassung.set(stationEntlassung);
}

public SimpleObjectProperty<LocalDate> stationEntlassungProperty() {
return stationEntlassung;
}

public int getFallId() {
return fallId;
}


+ 13
- 14
src/main/java/de/uniluebeck/mi/projmi6/model/Untersuchung.java View File

@@ -3,7 +3,6 @@ package de.uniluebeck.mi.projmi6.model;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;

import java.time.LocalDateTime;

@@ -46,40 +45,40 @@ public class Untersuchung extends Version {
return storniert.get();
}

public SimpleBooleanProperty storniertProperty() {
return storniert;
}

public void setStorniert(boolean storniert) {
this.storniert.set(storniert);
}

public SimpleBooleanProperty storniertProperty() {
return storniert;
}

public LocalDateTime getUntersuchungsdatum() {
return untersuchungsdatum.get();
}

public void setUntersuchungsdatum(LocalDateTime untersuchungsdatum) {
this.untersuchungsdatum.set(untersuchungsdatum);
}

public SimpleObjectProperty<LocalDateTime> untersuchungsdatumProperty() {
return untersuchungsdatum;
}

@Override
public String toString() {
return getUntersuchungsdatum()+": "+getOpscode().getText();
}

public void setUntersuchungsdatum(LocalDateTime untersuchungsdatum) {
this.untersuchungsdatum.set(untersuchungsdatum);
return getUntersuchungsdatum() + ": " + getOpscode().getText();
}

public int getUntersID() {
return untersID.get();
}

public SimpleIntegerProperty untersIDProperty() {
return untersID;
}

public void setUntersID(int untersID) {
this.untersID.set(untersID);
}

public SimpleIntegerProperty untersIDProperty() {
return untersID;
}
}

+ 60
- 61
src/main/java/de/uniluebeck/mi/projmi6/view/DateTimePicker.java View File

@@ -2,23 +2,21 @@ package de.uniluebeck.mi.projmi6.view;

import javafx.beans.binding.Bindings;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.IntegerPropertyBase;
import javafx.collections.FXCollections;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.control.*;
import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.effect.DropShadow;
import javafx.scene.effect.Effect;
import javafx.scene.layout.*;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Priority;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.Arrays;
import java.util.stream.IntStream;
import java.time.LocalDateTime;
import java.time.LocalTime;

/**
* A picker for date and time, composed from a DatePicker and two ComboBoxes. It also has an optional Button to set
* date and time to the current system time.
@@ -37,12 +35,12 @@ public class DateTimePicker extends HBox {
/**
* Empty constructor for the FXMLLoader.
*/
public DateTimePicker(){
public DateTimePicker() {
this.setAlignment(Pos.CENTER_LEFT);
hourText.setOnKeyReleased(event ->{
if(hourText.getCaretPosition()>=2){
hourText.setOnKeyReleased(event -> {
if (hourText.getCaretPosition() >= 2) {
int hour = Integer.parseInt(hourText.getText());
if(hour>=0 && hour <= 24){
if (hour >= 0 && hour <= 24) {
minuteText.requestFocus();
}
}
@@ -57,34 +55,34 @@ public class DateTimePicker extends HBox {
minuteText.setPromptText("MM");
HBox.setHgrow(minuteText, Priority.ALWAYS);

hourText.effectProperty().bind(Bindings.<Effect>createObjectBinding(()->{
hourText.effectProperty().bind(Bindings.<Effect>createObjectBinding(() -> {
String text = hourText.getText();
if(text.isEmpty()){
if (text.isEmpty()) {
return null;
}

int value = Integer.parseInt(text);
if(value>=0&&value<24){
if (value >= 0 && value < 24) {
return null;
}
return invalidValue;
}, hourText.textProperty()));

minuteText.effectProperty().bind(Bindings.<Effect>createObjectBinding(()->{
minuteText.effectProperty().bind(Bindings.<Effect>createObjectBinding(() -> {
String text = minuteText.getText();
if(text.isEmpty()){
if (text.isEmpty()) {
return null;
}

int value = Integer.parseInt(text);
if(value>=0&&value<59){
if (value >= 0 && value < 59) {
return null;
}
return invalidValue;
}, minuteText.textProperty()));
Label colon = new Label(":");

HBox timePicker = new HBox(hourText, colon,minuteText);
HBox timePicker = new HBox(hourText, colon, minuteText);
timePicker.maxHeightProperty().bind(datePicker.heightProperty());
timePicker.getStyleClass().add("time-picker");
timePicker.setMinWidth(55);
@@ -98,84 +96,85 @@ public class DateTimePicker extends HBox {
btnNow.getStyleClass().add("now-button");

//Add the subcomponents to the view.
this.getChildren().addAll(datePicker,timePicker,btnNow);
this.getChildren().addAll(datePicker, timePicker, btnNow);


this.setSpacing(5);
}




/**
* Setter for the DateTime that is set in the view.
* @param localDateTime The date to be set in the view.
*/
public void setDateTime(LocalDateTime localDateTime){
if(localDateTime==null){
hourText.setText("");
minuteText.setText("");
datePicker.setValue(null);
}else{
datePicker.setValue(LocalDate.from(localDateTime));
hourText.setText(Integer.toString(localDateTime.getHour()));

int minute = localDateTime.getMinute();
minuteText.setText((minute<9?"0":"")+Integer.toString(minute));
}
}

/**
* Sets the date set in the view to the current systems time.
*/
public void setToCurrentDateTime(){
public void setToCurrentDateTime() {
setDateTime(LocalDateTime.now());
}


/**
* Getter for date and time that is currently set in the view.
*
* @return A LocalDateTime object or null, if one or more fields are not set.
*/
public LocalDateTime getDateTime(){
if(datePicker.getValue()==null ){
return null;
public LocalDateTime getDateTime() {
if (datePicker.getValue() == null) {
return null;
}
try{
int hour = Integer.parseInt( hourText.getText());
try {
int hour = Integer.parseInt(hourText.getText());
int minute = Integer.parseInt(minuteText.getText());
if(hour>=24|| hour<0||minute<0||minute>=60){
if (hour >= 24 || hour < 0 || minute < 0 || minute >= 60) {
return null;
}
return LocalDateTime.of(datePicker.getValue(), LocalTime.of(hour, minute));
}catch (Exception e){
return null;
} catch (Exception e) {
return null;
}
}

/**
* A property for hiding the "Set date and time to now"-Button.
* @return A BooleanProperty, true if the button is visible.
* Setter for the DateTime that is set in the view.
*
* @param localDateTime The date to be set in the view.
*/
public BooleanProperty nowButtonVisiblePropety(){
return btnNow.visibleProperty();
public void setDateTime(LocalDateTime localDateTime) {
if (localDateTime == null) {
hourText.setText("");
minuteText.setText("");
datePicker.setValue(null);
} else {
datePicker.setValue(LocalDate.from(localDateTime));
hourText.setText(Integer.toString(localDateTime.getHour()));

int minute = localDateTime.getMinute();
minuteText.setText((minute < 9 ? "0" : "") + Integer.toString(minute));
}
}

/**
* Setter for the {@link DateTimePicker#nowButtonVisiblePropety}.
* @param visible When set to true, the button will be shown.
* A property for hiding the "Set date and time to now"-Button.
*
* @return A BooleanProperty, true if the button is visible.
*/
public void setNowButtonVisible(boolean visible){
btnNow.setVisible(visible);
public BooleanProperty nowButtonVisiblePropety() {
return btnNow.visibleProperty();
}

/**
* Getter for the {@link DateTimePicker#nowButtonVisiblePropety}.
*
* @return true if the now-Button is visible, false otherwise.
*/
public boolean isNowButtonVisible(){
public boolean isNowButtonVisible() {
return btnNow.isVisible();
}

/**
* Setter for the {@link DateTimePicker#nowButtonVisiblePropety}.
*
* @param visible When set to true, the button will be shown.
*/
public void setNowButtonVisible(boolean visible) {
btnNow.setVisible(visible);
}


}

+ 20
- 19
src/main/java/de/uniluebeck/mi/projmi6/view/MessageIcon.java View File

@@ -2,7 +2,6 @@ package de.uniluebeck.mi.projmi6.view;

import javafx.animation.FadeTransition;
import javafx.animation.Timeline;
import javafx.animation.Transition;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.geometry.Pos;
@@ -19,7 +18,7 @@ import javafx.util.Duration;

/**
* A simple Button with a letter icon that manages an IntegerProperty. Blinks if the integer is greater than zero.
*
* <p>
* Created by Johannes on 21/11/2015.
*
* @author Johannes
@@ -29,7 +28,7 @@ public class MessageIcon extends Button {
/**
* The letter image.
*/
private final ImageView imageView = new ImageView(new Image("message.png"));;
private final ImageView imageView = new ImageView(new Image("message.png"));

/**
* The message number label in the center of the button.
@@ -51,7 +50,7 @@ public class MessageIcon extends Button {
/**
* Public parameterless constructor, required for the FXMLLoader.
*/
public MessageIcon(){
public MessageIcon() {
initImage();
initLabel();
initTransition();
@@ -66,18 +65,18 @@ public class MessageIcon extends Button {
/**
* Inits the label with the message count.
*/
private void initLabel(){
private void initLabel() {
messageCountLabel.textProperty().bind(messageCount.asString());
messageCountLabel.setFont(Font.font("", FontWeight.BOLD, 20));
StackPane.setAlignment(messageCountLabel, Pos.CENTER);
messageCountLabel.textFillProperty().bind(Bindings.createObjectBinding(
() -> (messageCount.get() > 0? Color.DARKRED: Color.BLACK), messageCount));
() -> (messageCount.get() > 0 ? Color.DARKRED : Color.BLACK), messageCount));
}

/**
* Inits the letter image with shadow etc.
*/
private void initImage(){
private void initImage() {
imageView.setFitHeight(30);
imageView.setFitWidth(30);
/* imageView.opacityProperty().bind(Bindings.createDoubleBinding(
@@ -87,7 +86,7 @@ public class MessageIcon extends Button {
ds1.setOffsetX(0.0f);
ds1.setColor(Color.valueOf("#e38217"));
imageView.effectProperty().bind(Bindings.createObjectBinding(
()->messageCount.get() > 0 ? ds1:null, messageCount
() -> messageCount.get() > 0 ? ds1 : null, messageCount
));

}
@@ -95,16 +94,16 @@ public class MessageIcon extends Button {
/**
* Set up blinking effect.
*/
private void initTransition(){
private void initTransition() {
transition = new FadeTransition(Duration.millis(500), imageView);
transition.setFromValue(0.2);
transition.setToValue(1.0);
transition.setCycleCount(Timeline.INDEFINITE);
transition.setAutoReverse(true);
messageCount.addListener((observable, oldValue, newValue) -> {
if(messageCount.get()>0){
if (messageCount.get() > 0) {
transition.play();
}else{
} else {
transition.stop();

}
@@ -113,6 +112,7 @@ public class MessageIcon extends Button {

/**
* Getter for the {@link #messageCountProperty()}
*
* @return The messageCountProperty's value.
*/
public int getMessageCount() {
@@ -120,21 +120,22 @@ public class MessageIcon extends Button {
}

/**
* The count of messages that this view will indicate.
* @return A property for the count of messages.
*/
public SimpleIntegerProperty messageCountProperty() {
return messageCount;
}

/**
* Setter for the {@link #messageCountProperty()}
*
* @param messageCount The value to be set in the message count property.
*/
public void setMessageCount(int messageCount) {
this.messageCount.set(messageCount);
}

/**
* The count of messages that this view will indicate.
*
* @return A property for the count of messages.
*/
public SimpleIntegerProperty messageCountProperty() {
return messageCount;
}


}

+ 6
- 7
src/main/java/de/uniluebeck/mi/projmi6/view/NumberTextField.java View File

@@ -5,29 +5,28 @@ import javafx.scene.control.TextField;

/**
* Based on <a href="http://blog.axxg.de/javafx-textfield-beschraenken/" >http://blog.axxg.de/javafx-textfield-beschraenken/</a>
*
* <p>
* TextField that only allows two digit characters.
* Using the {@link javafx.scene.control.TextFormatter} would be better.
*
* <p>
* Created by Johannes on 14/11/2015.
*/
public class NumberTextField extends TextField {



@Override
public void replaceText(int start, int end, String text) {
int charactersRemoved = end -start;
int charactersRemoved = end - start;
int charactersAdded = text.length();
if ((text.matches("[0-9]")||text.length()==0) && getText().length()-charactersRemoved+charactersAdded <=2) {
if ((text.matches("[0-9]") || text.length() == 0) && getText().length() - charactersRemoved + charactersAdded <= 2) {
super.replaceText(start, end, text);
}
}

@Override
public void replaceSelection(String text) {
int newTextLength = getText().length()-getSelectedText().length()+text.length();
if (newTextLength<=2 && (text.matches("[0-9]")||text.length()==0)) {
int newTextLength = getText().length() - getSelectedText().length() + text.length();
if (newTextLength <= 2 && (text.matches("[0-9]") || text.length() == 0)) {
super.replaceSelection(text);
}
}


+ 1
- 1
src/main/java/de/uniluebeck/mi/projmi6/view/SelectKeyComboBoxListener.java View File

@@ -13,7 +13,7 @@ import javafx.scene.input.MouseEvent;

/**
* Created by nils on 19.11.2015.
* <p/>
* <p>
* Geklaut von <a href="http://tech.chitgoks.com/2013/07/19/how-to-go-to-item-in-combobox-on-keypress-in-java-fx-2/">hier</a>
*/
public class SelectKeyComboBoxListener implements EventHandler<KeyEvent> {


+ 90
- 82
src/main/resources/diagnose.fxml View File

@@ -1,88 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import java.lang.*?>

<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>


<?import java.net.URL?>
<SplitPane dividerPositions="0.45" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.uniluebeck.mi.projmi6.controller.DiagnoseController">
<items>
<VBox>
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Button fx:id="btnDiagCreate" mnemonicParsing="false" onAction="#clickedDiagCreate" text="Neue Diagnose erstellen" />
</items>
</ToolBar>
<ListView prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" fx:id="diagnoseList"/>
</children>
</VBox>
<VBox>
<children>
<GridPane vgap="5.0" fx:id="fields" styleClass="fields">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="Diagnose:" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<Label text="Diagnoseart:" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<Label text="DiagnoseArzt:" GridPane.columnIndex="0" GridPane.rowIndex="2" />
<Label text="Freitext: (optional)" GridPane.columnIndex="0" GridPane.rowIndex="3" />
<ComboBox fx:id="diagDiagnose" maxWidth="1.7976931348623157E308" promptText="ICD-10" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<ComboBox fx:id="diagDiagnoseArt" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<ComboBox fx:id="diagDiagnoseArzt" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" promptText="CurrentUser is Default" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<TextArea fx:id="diagFreitext" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
</GridPane>
<HBox alignment="TOP_RIGHT" spacing="5.0" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="btnDiagAbort" mnemonicParsing="false" onAction="#clickedAbort" text="Abbrechen" />
<Button fx:id="btnDiagEdit" mnemonicParsing="false" onAction="#clickedEdit" text="Bearbeiten" />
<Button fx:id="btnDiagSave" mnemonicParsing="false" onAction="#clickedDiagSave" text="Speichern" />
</children>
<VBox.margin>
<Insets />
</VBox.margin>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
</HBox>
<GridPane>
<children>
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.rowIndex="2" />
<Label styleClass="ersteller-label" text="Ersteller: " />
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.rowIndex="1" />
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.rowIndex="3" />
<Label styleClass="ersteller-value" fx:id="diagCreator" text="lorem" GridPane.columnIndex="1" />
<Label styleClass="ersteller-value" fx:id="diagCreateTime" text="ipsum" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label styleClass="ersteller-value" fx:id="diagChanger" text="dolor" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label styleClass="ersteller-value" fx:id="diagChangeTime" text="amet" GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
</children>
</VBox>
</items>
<stylesheets>
<URL value="@style.css" />
</stylesheets>
<SplitPane xmlns:fx="http://javafx.com/fxml/1" dividerPositions="0.45" xmlns="http://javafx.com/javafx/8"
fx:controller="de.uniluebeck.mi.projmi6.controller.DiagnoseController">
<items>
<VBox>
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Button fx:id="btnDiagCreate" mnemonicParsing="false" onAction="#clickedDiagCreate"
text="Neue Diagnose erstellen"/>
</items>
</ToolBar>
<ListView prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" fx:id="diagnoseList"/>
</children>
</VBox>
<VBox>
<children>
<GridPane vgap="5.0" fx:id="fields" styleClass="fields">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<Label text="Diagnose:" GridPane.columnIndex="0" GridPane.rowIndex="0"/>
<Label text="Diagnoseart:" GridPane.columnIndex="0" GridPane.rowIndex="1"/>
<Label text="DiagnoseArzt:" GridPane.columnIndex="0" GridPane.rowIndex="2"/>
<Label text="Freitext: (optional)" GridPane.columnIndex="0" GridPane.rowIndex="3"/>
<ComboBox fx:id="diagDiagnose" maxWidth="1.7976931348623157E308" promptText="ICD-10"
GridPane.columnIndex="1" GridPane.rowIndex="0"/>
<ComboBox fx:id="diagDiagnoseArt" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>
<ComboBox fx:id="diagDiagnoseArzt" maxHeight="1.7976931348623157E308"
maxWidth="1.7976931348623157E308" promptText="CurrentUser is Default"
GridPane.columnIndex="1" GridPane.rowIndex="2"/>
<TextArea fx:id="diagFreitext" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1"
GridPane.rowIndex="3"/>
</children>
</GridPane>
<HBox alignment="TOP_RIGHT" spacing="5.0" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="btnDiagAbort" mnemonicParsing="false" onAction="#clickedAbort" text="Abbrechen"/>
<Button fx:id="btnDiagEdit" mnemonicParsing="false" onAction="#clickedEdit" text="Bearbeiten"/>
<Button fx:id="btnDiagSave" mnemonicParsing="false" onAction="#clickedDiagSave"
text="Speichern"/>
</children>
<VBox.margin>
<Insets/>
</VBox.margin>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding>
</HBox>
<GridPane>
<children>
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.rowIndex="2"/>
<Label styleClass="ersteller-label" text="Ersteller: "/>
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.rowIndex="1"/>
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.rowIndex="3"/>
<Label styleClass="ersteller-value" fx:id="diagCreator" text="lorem" GridPane.columnIndex="1"/>
<Label styleClass="ersteller-value" fx:id="diagCreateTime" text="ipsum" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>
<Label styleClass="ersteller-value" fx:id="diagChanger" text="dolor" GridPane.columnIndex="1"
GridPane.rowIndex="2"/>
<Label styleClass="ersteller-value" fx:id="diagChangeTime" text="amet" GridPane.columnIndex="1"
GridPane.rowIndex="3"/>
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
</GridPane>
</children>
</VBox>
</items>
<stylesheets>
<URL value="@style.css"/>
</stylesheets>
</SplitPane>

+ 7
- 9
src/main/resources/fall.fxml View File

@@ -1,14 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import de.uniluebeck.mi.projmi6.view.DateTimePicker?>
<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>

<?import java.net.URL?>
<?import de.uniluebeck.mi.projmi6.view.DateTimePicker?>
<VBox fx:controller="de.uniluebeck.mi.projmi6.controller.FallController" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.uniluebeck.mi.projmi6.controller.FallController"
xmlns="http://javafx.com/javafx/8">
<children>
<GridPane vgap="5.0" fx:id="fallFields" styleClass="fields">
<children>
@@ -16,10 +14,10 @@
<Label fx:id="fallPatID" text="John Doe (PatID = XXX)" GridPane.columnIndex="1"/>

<Label text="Aufnahmedatum:" GridPane.rowIndex="1"/>
<DateTimePicker GridPane.rowIndex="1" GridPane.columnIndex="1" fx:id="dtTmAufnahme" />
<DateTimePicker GridPane.rowIndex="1" GridPane.columnIndex="1" fx:id="dtTmAufnahme"/>

<Label text="Entlassungsdatum:" GridPane.rowIndex="2"/>
<DateTimePicker GridPane.rowIndex="2" GridPane.columnIndex="1" fx:id="dtTmEntlassung" />
<DateTimePicker GridPane.rowIndex="2" GridPane.columnIndex="1" fx:id="dtTmEntlassung"/>

<Label text="Versichertennummer:" GridPane.rowIndex="3"/>
<TextField fx:id="fallVersichertennummer" GridPane.columnIndex="1" GridPane.rowIndex="3"/>
@@ -44,7 +42,7 @@
</children>
<columnConstraints>
<ColumnConstraints percentWidth="30" minWidth="200"/>
<ColumnConstraints hgrow="ALWAYS" />
<ColumnConstraints hgrow="ALWAYS"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
@@ -133,6 +131,6 @@
</HBox>
</children>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</VBox>

+ 30
- 29
src/main/resources/log.fxml View File

@@ -1,36 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import java.net.*?>
<?import javafx.geometry.*?>
<?import java.lang.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?>
<?import java.net.URL?>

<VBox minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.uniluebeck.mi.projmi6.controller.LogController">
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Pane HBox.hgrow="ALWAYS" />
<Button fx:id="btnRefresh" onAction="#clickedRefresh" text="Liste aktualisieren" />
</items>
</ToolBar>
<TableView fx:id="tblLog" VBox.vgrow="ALWAYS">
<columns>
<TableColumn fx:id="colLogDirection" editable="false" maxWidth="50.0" minWidth="75.0" text="Richtung" />
<TableColumn fx:id="colLogIp" editable="false" maxWidth="200.0" minWidth="150.0" text="Source / Destination" />
<TableColumn fx:id="colLogTime" editable="false" maxWidth="200.0" minWidth="150.0" text="Uhrzeit" />
<TableColumn fx:id="colLogMessage" editable="false" prefWidth="75.0" text="Nachricht" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
<VBox xmlns:fx="http://javafx.com/fxml/1" minHeight="-Infinity" minWidth="-Infinity" xmlns="http://javafx.com/javafx/8"
fx:controller="de.uniluebeck.mi.projmi6.controller.LogController">
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Pane HBox.hgrow="ALWAYS"/>
<Button fx:id="btnRefresh" onAction="#clickedRefresh" text="Liste aktualisieren"/>
</items>
</ToolBar>
<TableView fx:id="tblLog" VBox.vgrow="ALWAYS">
<columns>
<TableColumn fx:id="colLogDirection" editable="false" maxWidth="50.0" minWidth="75.0" text="Richtung"/>
<TableColumn fx:id="colLogIp" editable="false" maxWidth="200.0" minWidth="150.0"
text="Source / Destination"/>
<TableColumn fx:id="colLogTime" editable="false" maxWidth="200.0" minWidth="150.0" text="Uhrzeit"/>
<TableColumn fx:id="colLogMessage" editable="false" prefWidth="75.0" text="Nachricht"/>
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY"/>
</columnResizePolicy>
</TableView>
</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</VBox>

+ 35
- 31
src/main/resources/main.fxml View File

@@ -1,59 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import de.uniluebeck.mi.projmi6.view.* ?>

<?import java.net.URL?>
<?import de.uniluebeck.mi.projmi6.view.MessageIcon?>
<VBox fx:controller="de.uniluebeck.mi.projmi6.controller.MainController" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.uniluebeck.mi.projmi6.controller.MainController"
maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" xmlns="http://javafx.com/javafx/8">
<children>
<TabPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity" minWidth="-Infinity" side="LEFT" tabClosingPolicy="UNAVAILABLE" VBox.vgrow="ALWAYS">
<TabPane maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" minHeight="-Infinity"
minWidth="-Infinity" side="LEFT" tabClosingPolicy="UNAVAILABLE" VBox.vgrow="ALWAYS">
<tabs>
<Tab text="Patientenübersicht">
<Tab text="Patientenübersicht">
<content>
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<SplitPane dividerPositions="0.5" maxHeight="1.7976931348623157E308" maxWidth="1.7976931348623157E308" orientation="VERTICAL" VBox.vgrow="ALWAYS">
<SplitPane dividerPositions="0.5" maxHeight="1.7976931348623157E308"
maxWidth="1.7976931348623157E308" orientation="VERTICAL" VBox.vgrow="ALWAYS">
<items>
<fx:include source="patient_tables.fxml" />
<SplitPane dividerPositions="0.2981007431874484" prefHeight="160.0" prefWidth="200.0" fx:id="fallOverview">
<fx:include source="patient_tables.fxml"/>
<SplitPane dividerPositions="0.2981007431874484" prefHeight="160.0"
prefWidth="200.0" fx:id="fallOverview">
<items>
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Button fx:id="btnFallCreate" text="Neuen _Fall erstellen" onAction="#clickedCreateFall"/>
<Button fx:id="btnFallCreate"
text="Neuen _Fall erstellen"
onAction="#clickedCreateFall"/>
</items>
</ToolBar>
<ListView VBox.vgrow="ALWAYS" fx:id="lvFall" >
<placeholder><Label fx:id="lvFallPlaceholder" /></placeholder>
<ListView VBox.vgrow="ALWAYS" fx:id="lvFall">
<placeholder>
<Label fx:id="lvFallPlaceholder"/>
</placeholder>
</ListView>
</children>
</VBox>
<TabPane fx:id="tabPaneFall" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE">
<TabPane fx:id="tabPaneFall" prefHeight="200.0" prefWidth="200.0"
tabClosingPolicy="UNAVAILABLE">
<tabs>
<Tab fx:id="tabFallOverview" text="Fallübersicht">
<content>
<fx:include source="fall.fxml" />
<fx:include source="fall.fxml"/>
</content>
</Tab>
<Tab fx:id="tabFallUntersuchungen" text="Untersuchungen">
<content>
<fx:include source="untersuchungen.fxml" />
<fx:include source="untersuchungen.fxml"/>
</content>
</Tab>
<Tab fx:id="tabFallDiagnose" text="Diagnose">
<content>
<fx:include source="diagnose.fxml" />
<fx:include source="diagnose.fxml"/>
</content>
</Tab>
<Tab fx:id="tabFallStationsHistorie" text="Stationshistorie">
<content>
<fx:include source="stationshistorie.fxml" />
<fx:include source="stationshistorie.fxml"/>
</content>
</Tab>
</tabs>
@@ -66,29 +69,30 @@
</VBox>
</content>
</Tab>
<Tab text="Einstellungen">
<content>
<fx:include source="settings.fxml" />
</content>
<Tab text="Einstellungen">
<content>
<fx:include source="settings.fxml"/>
</content>
</Tab>
<Tab text="Logs">
<content>
<fx:include source="log.fxml" />
<fx:include source="log.fxml"/>
</content>
</Tab>
</tabs>
</TabPane>
<ToolBar>
<items>
<Label text="Mitarbeiter wählen:" />
<ChoiceBox fx:id="cmbUserChoose" prefWidth="150.0" />
<Pane HBox.hgrow="ALWAYS" />
<ProgressIndicator fx:id="progressIndicator" visible="false" pickOnBounds="false" prefHeight="35.0" prefWidth="35.0" />
<fx:include source="message.fxml" />
<Label text="Mitarbeiter wählen:"/>
<ChoiceBox fx:id="cmbUserChoose" prefWidth="150.0"/>
<Pane HBox.hgrow="ALWAYS"/>
<ProgressIndicator fx:id="progressIndicator" visible="false" pickOnBounds="false" prefHeight="35.0"
prefWidth="35.0"/>
<fx:include source="message.fxml"/>
</items>
</ToolBar>
</children>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</VBox>

+ 4
- 10
src/main/resources/message.fxml View File

@@ -1,13 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import de.uniluebeck.mi.projmi6.view.* ?>

<MessageIcon fx:id="messageIcon" fx:controller="de.uniluebeck.mi.projmi6.controller.MessageController"
onAction="#onMessageIconClicked"
xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"/>
<?import de.uniluebeck.mi.projmi6.view.MessageIcon?>
<MessageIcon xmlns:fx="http://javafx.com/fxml/1" fx:id="messageIcon"
fx:controller="de.uniluebeck.mi.projmi6.controller.MessageController"
onAction="#onMessageIconClicked" xmlns="http://javafx.com/javafx/8"/>

+ 22
- 19
src/main/resources/message_list.fxml View File

@@ -1,23 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>


<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="de.uniluebeck.mi.projmi6.controller.MessageListController">
<children>
<ListView fx:id="lvMessages" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
<HBox alignment="CENTER_RIGHT" spacing="5.0" VBox.vgrow="NEVER">
<children>
<Button fx:id="btnRemove" cancelButton="true" mnemonicParsing="false" onAction="#clickedRemove" text="Entfernen" />
<Button fx:id="btnShow" defaultButton="true" mnemonicParsing="false" onAction="#clickedShow" text="Zeigen" />
</children>
<VBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</VBox.margin>
</HBox>
</children>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.layout.*?>
<VBox xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
minWidth="-Infinity"
prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8"
fx:controller="de.uniluebeck.mi.projmi6.controller.MessageListController">
<children>
<ListView fx:id="lvMessages" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS"/>
<HBox alignment="CENTER_RIGHT" spacing="5.0" VBox.vgrow="NEVER">
<children>
<Button fx:id="btnRemove" cancelButton="true" mnemonicParsing="false" onAction="#clickedRemove"
text="Entfernen"/>
<Button fx:id="btnShow" defaultButton="true" mnemonicParsing="false" onAction="#clickedShow"
text="Zeigen"/>
</children>
<VBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</VBox.margin>
</HBox>
</children>
</VBox>

+ 130
- 117
src/main/resources/patient_edit.fxml View File

@@ -1,155 +1,168 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import java.net.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import java.net.URL?>

<VBox maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="633.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.uniluebeck.mi.projmi6.controller.PatientEditorController">
<VBox xmlns:fx="http://javafx.com/fxml/1" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity"
minWidth="-Infinity"
prefHeight="633.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8"
fx:controller="de.uniluebeck.mi.projmi6.controller.PatientEditorController">
<children>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="35.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="35.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints maxHeight="1.7976931348623157E308" minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<Label text="PatID:" />
<Label fx:id="patId" text="xxxx" GridPane.columnIndex="1" />
<Label text="PatID:"/>
<Label fx:id="patId" text="xxxx" GridPane.columnIndex="1"/>

<Label text="Vorname:" GridPane.rowIndex="1"/>
<TextField fx:id="patVorname" promptText="Vorname" GridPane.columnIndex="1" GridPane.rowIndex="1"/>

<Label text="Geburtsname:" GridPane.rowIndex="2"/>
<TextField fx:id="patGeburtsname" promptText="Geburtsname" GridPane.columnIndex="1"
GridPane.rowIndex="2"/>

<Label text="Nachname:" GridPane.rowIndex="3"/>
<TextField fx:id="patNachname" promptText="Nachname" GridPane.columnIndex="1" GridPane.rowIndex="3"/>

<Label text="Vorname:" GridPane.rowIndex="1" />
<TextField fx:id="patVorname" promptText="Vorname" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Straße / Hausnummer:" GridPane.rowIndex="4"/>
<HBox alignment="CENTER_RIGHT" spacing="5.0" GridPane.columnIndex="1" GridPane.rowIndex="4">
<children>
<TextField fx:id="patStrasse" promptText="Straße" GridPane.columnIndex="1" GridPane.rowIndex="4"
HBox.hgrow="ALWAYS"/>
<TextField fx:id="patHausnummer" promptText="Hausnummer" HBox.hgrow="SOMETIMES"/>
</children>
</HBox>

<Label text="Geburtsname:" GridPane.rowIndex="2" />
<TextField fx:id="patGeburtsname" promptText="Geburtsname" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label text="PLZ / Ort:" GridPane.rowIndex="5"/>
<HBox alignment="CENTER_RIGHT" spacing="5.0" GridPane.columnIndex="1" GridPane.rowIndex="5">
<children>
<TextField fx:id="patPlz" promptText="PLZ" GridPane.columnIndex="1" GridPane.rowIndex="6"
HBox.hgrow="SOMETIMES"/>
<TextField fx:id="patOrt" promptText="Ort" HBox.hgrow="ALWAYS"/>
</children>
</HBox>

<Label text="Nachname:" GridPane.rowIndex="3" />
<TextField fx:id="patNachname" promptText="Nachname" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label text="Telefonnummer:" GridPane.rowIndex="6"/>
<TextField fx:id="patTelefonnummer" promptText="Telefonnummer" GridPane.columnIndex="1"
GridPane.rowIndex="6"/>

<Label text="Straße / Hausnummer:" GridPane.rowIndex="4" />
<HBox alignment="CENTER_RIGHT" spacing="5.0" GridPane.columnIndex="1" GridPane.rowIndex="4">
<children>
<TextField fx:id="patStrasse" promptText="Straße" GridPane.columnIndex="1" GridPane.rowIndex="4" HBox.hgrow="ALWAYS" />
<TextField fx:id="patHausnummer" promptText="Hausnummer" HBox.hgrow="SOMETIMES" />
</children>
</HBox>
<Label text="Geburtsdatum:" GridPane.rowIndex="7"/>
<DatePicker fx:id="patGeburtsdatum" promptText="Geburtsdatum" GridPane.columnIndex="1"
GridPane.rowIndex="7"/>

<Label text="PLZ / Ort:" GridPane.rowIndex="5" />
<HBox alignment="CENTER_RIGHT" spacing="5.0" GridPane.columnIndex="1" GridPane.rowIndex="5">
<children>
<TextField fx:id="patPlz" promptText="PLZ" GridPane.columnIndex="1" GridPane.rowIndex="6" HBox.hgrow="SOMETIMES" />
<TextField fx:id="patOrt" promptText="Ort" HBox.hgrow="ALWAYS" />
</children>
</HBox>
<Label text="Familienstand:" GridPane.rowIndex="8"/>
<ComboBox fx:id="patFamilienstand" prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="8"/>

<Label text="Telefonnummer:" GridPane.rowIndex="6" />
<TextField fx:id="patTelefonnummer" promptText="Telefonnummer" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<Label text="Geschlecht:" GridPane.rowIndex="9"/>
<ComboBox fx:id="patGeschlecht" prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="9"/>

<Label text="Geburtsdatum:" GridPane.rowIndex="7" />
<DatePicker fx:id="patGeburtsdatum" promptText="Geburtsdatum" GridPane.columnIndex="1" GridPane.rowIndex="7" />
<Label text="Familienstand:" GridPane.rowIndex="8" />
<ComboBox fx:id="patFamilienstand" prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="8" />
<Label text="Versicherungsnummer:" GridPane.rowIndex="10"/>
<TextField fx:id="patVersicherungsnummer" promptText="Versicherungsnummer" GridPane.columnIndex="1"
GridPane.rowIndex="10"/>

<Label text="Geschlecht:" GridPane.rowIndex="9" />
<ComboBox fx:id="patGeschlecht" prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="9" />
<Label text="Versicherungsnummer:" GridPane.rowIndex="10" />
<TextField fx:id="patVersicherungsnummer" promptText="Versicherungsnummer" GridPane.columnIndex="1" GridPane.rowIndex="10" />
<Label text="Versicherung:" GridPane.rowIndex="11" />
<ComboBox fx:id="patVersicherung" prefWidth="225.0" GridPane.columnIndex="1" GridPane.rowIndex="11" />
<Label text="Versicherung:" GridPane.rowIndex="11"/>
<ComboBox fx:id="patVersicherung" prefWidth="225.0" GridPane.columnIndex="1" GridPane.rowIndex="11"/>

<Label text="CAVE:" GridPane.rowIndex="12"/>
<TextArea fx:id="patCave" maxHeight="100.0" prefHeight="56.0" prefWidth="383.0" promptText="CAVE"
GridPane.columnIndex="1" GridPane.rowIndex="12">
<GridPane.margin>
<Insets top="5.0"/>
</GridPane.margin>
</TextArea>

<Label text="CAVE:" GridPane.rowIndex="12" />
<TextArea fx:id="patCave" maxHeight="100.0" prefHeight="56.0" prefWidth="383.0" promptText="CAVE" GridPane.columnIndex="1" GridPane.rowIndex="12">
<GridPane.margin>
<Insets top="5.0" />
</GridPane.margin></TextArea>
</children>
<VBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</VBox.margin>
<VBox.margin>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</VBox.margin>
</GridPane>
<HBox alignment="TOP_RIGHT" prefHeight="100.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="btnPatSave" defaultButton="true" mnemonicParsing="false" onAction="#clickedSave" text="Speichern">
<Button fx:id="btnPatSave" defaultButton="true" mnemonicParsing="false" onAction="#clickedSave"
text="Speichern">
<HBox.margin>
<Insets right="5.0" />
<Insets right="5.0"/>
</HBox.margin>
</Button>
<Button fx:id="btnPatAbort" cancelButton="true" mnemonicParsing="false" onAction="#clickedAbort" text="Abbrechen">
<Button fx:id="btnPatAbort" cancelButton="true" mnemonicParsing="false" onAction="#clickedAbort"
text="Abbrechen">
<HBox.margin>
<Insets right="5.0" />
<Insets right="5.0"/>
</HBox.margin>
</Button>
</children>
</HBox>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<GridPane>
<children>
<Label styleClass="ersteller-label" text="Ersteller: " GridPane.rowIndex="0" />
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.rowIndex="1" />
<Label fx:id="patCreator" styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label fx:id="patCreateTime" styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="1" />
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
<GridPane GridPane.columnIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.rowIndex="0" />
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.rowIndex="1" />
<Label fx:id="patChanger" styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label fx:id="patChangeTime" styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="1" />
</children>
</GridPane>
</children>
<VBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</VBox.margin>
</GridPane>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<GridPane>
<children>
<Label styleClass="ersteller-label" text="Ersteller: " GridPane.rowIndex="0"/>
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.rowIndex="1"/>
<Label fx:id="patCreator" styleClass="ersteller-value" GridPane.columnIndex="1"
GridPane.rowIndex="0"/>
<Label fx:id="patCreateTime" styleClass="ersteller-value" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
</GridPane>
<GridPane GridPane.columnIndex="1">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.rowIndex="0"/>
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.rowIndex="1"/>
<Label fx:id="patChanger" styleClass="ersteller-value" GridPane.columnIndex="1"
GridPane.rowIndex="0"/>
<Label fx:id="patChangeTime" styleClass="ersteller-value" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>
</children>
</GridPane>
</children>
<VBox.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</VBox.margin>
</GridPane>
</children>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</VBox>

+ 43
- 35
src/main/resources/patient_tables.fxml View File

@@ -1,13 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<?import java.net.URL?>
<TabPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.uniluebeck.mi.projmi6.controller.PatientTablesController" fx:id="patientOverviewTabPane">
<TabPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8"
fx:controller="de.uniluebeck.mi.projmi6.controller.PatientTablesController" fx:id="patientOverviewTabPane">
<tabs>
<Tab closable="false" text="Patientenübersicht" fx:id="patientOverviewTab">
<content>
@@ -15,37 +12,41 @@
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Button fx:id="btnPatCreate" text="Neuen _Patient erstellen" onAction="#clickedCreatePatient" />
<Button fx:id="btnPatEdit" text="Patient _bearbeiten" onAction="#clickedEditPatient"/>
<Pane HBox.hgrow="ALWAYS" />
<Button fx:id="btnPatRefresh" text="Liste aktualisieren" onAction="#clickedRefreshPatient"/>
<Button fx:id="btnPatCreate" text="Neuen _Patient erstellen"
onAction="#clickedCreatePatient"/>
<Button fx:id="btnPatEdit" text="Patient _bearbeiten" onAction="#clickedEditPatient"/>
<Pane HBox.hgrow="ALWAYS"/>
<Button fx:id="btnPatRefresh" text="Liste aktualisieren"
onAction="#clickedRefreshPatient"/>
</items>
</ToolBar>
<TableView fx:id="tblPatientOverview" editable="true" tableMenuButtonVisible="true" VBox.vgrow="ALWAYS">
<TableView fx:id="tblPatientOverview" editable="true" tableMenuButtonVisible="true"
VBox.vgrow="ALWAYS">
<placeholder>
<Label fx:id="lblTablePatientEmpty" />
<Label fx:id="lblTablePatientEmpty"/>
</placeholder>
<columns>
<TableColumn fx:id="colPatPatId" editable="false" prefWidth="75.0" sortable="false" text="PatID" />
<TableColumn fx:id="colPatPatId" editable="false" prefWidth="75.0" sortable="false"
text="PatID"/>
<TableColumn prefWidth="75.0" text="Name">
<columns>
<TableColumn fx:id="colPatGeburtsname" prefWidth="75.0" text="Geburtsname" />
<TableColumn fx:id="colPatNachname" prefWidth="75.0" text="Nachname" />
<TableColumn fx:id="colPatVorname" prefWidth="75.0" text="Vorname" />
<TableColumn fx:id="colPatGeburtsname" prefWidth="75.0" text="Geburtsname"/>
<TableColumn fx:id="colPatNachname" prefWidth="75.0" text="Nachname"/>
<TableColumn fx:id="colPatVorname" prefWidth="75.0" text="Vorname"/>
</columns>
</TableColumn>
<TableColumn fx:id="colPatGebDatum" prefWidth="75.0" text="GebDatum" />
<TableColumn fx:id="colPatGebDatum" prefWidth="75.0" text="GebDatum"/>
<TableColumn prefWidth="75.0" text="Adresse">
<columns>
<TableColumn fx:id="colPatStrasse" prefWidth="75.0" text="Straße" />
<TableColumn fx:id="colPatPlz" prefWidth="75.0" text="PLZ" />
<TableColumn fx:id="colPatOrt" prefWidth="75.0" text="Ort" />
<TableColumn fx:id="colPatStrasse" prefWidth="75.0" text="Straße"/>
<TableColumn fx:id="colPatPlz" prefWidth="75.0" text="PLZ"/>
<TableColumn fx:id="colPatOrt" prefWidth="75.0" text="Ort"/>
</columns>
</TableColumn>
<TableColumn fx:id="colPatCave" prefWidth="75.0" text="CAVE" />
<TableColumn fx:id="colPatCave" prefWidth="75.0" text="CAVE"/>
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY"/>
</columnResizePolicy>
</TableView>
</children>
@@ -58,28 +59,35 @@
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<ComboBox fx:id="cmbStationenFilter" prefWidth="250.0" promptText="Station ausw&#228;hlen..." />
<ToggleButton fx:id="btnEntlassenePatientenZeigen" mnemonicParsing="false" text="Entlassene Patienten zeigen" />
<Pane HBox.hgrow="ALWAYS" />
<Button fx:id="btnStatRefresh" text="Liste aktualisieren" onAction="#clickedRefreshStation"/>
<ComboBox fx:id="cmbStationenFilter" prefWidth="250.0"
promptText="Station ausw&#228;hlen..."/>
<ToggleButton fx:id="btnEntlassenePatientenZeigen" mnemonicParsing="false"
text="Entlassene Patienten zeigen"/>
<Pane HBox.hgrow="ALWAYS"/>
<Button fx:id="btnStatRefresh" text="Liste aktualisieren"
onAction="#clickedRefreshStation"/>
</items>
</ToolBar>
<SplitPane prefHeight="160.0" prefWidth="200.0" VBox.vgrow="ALWAYS">
<items>
<TableView fx:id="tblStationOverview" prefHeight="200.0" prefWidth="200.0" tableMenuButtonVisible="true">
<TableView fx:id="tblStationOverview" prefHeight="200.0" prefWidth="200.0"
tableMenuButtonVisible="true">
<placeholder>
<Label fx:id="lblTableStationEmpty" />
<Label fx:id="lblTableStationEmpty"/>
</placeholder>
<columns>
<TableColumn fx:id="colStatPatId" prefWidth="75.0" text="PatID" />
<TableColumn fx:id="colStatFullName" prefWidth="135.0" text="Nachname, Vorname" />
<TableColumn fx:id="colStatGebDatum" prefWidth="121.0" text="Geburtsdatum" />
<TableColumn fx:id="colStatAlter" prefWidth="50.0" text="Alter" />
<TableColumn fx:id="colStatAufnahmedatum" prefWidth="129.0" text="Aufnahmedatum" />
<TableColumn fx:id="colStatEntlassungsdatum" prefWidth="152.0" text="Entlassungsdatum" />
<TableColumn fx:id="colStatPatId" prefWidth="75.0" text="PatID"/>
<TableColumn fx:id="colStatFullName" prefWidth="135.0"
text="Nachname, Vorname"/>
<TableColumn fx:id="colStatGebDatum" prefWidth="121.0" text="Geburtsdatum"/>
<TableColumn fx:id="colStatAlter" prefWidth="50.0" text="Alter"/>
<TableColumn fx:id="colStatAufnahmedatum" prefWidth="129.0"
text="Aufnahmedatum"/>
<TableColumn fx:id="colStatEntlassungsdatum" prefWidth="152.0"
text="Entlassungsdatum"/>
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY"/>
</columnResizePolicy>
</TableView>
</items>
@@ -90,6 +98,6 @@
</Tab>
</tabs>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</TabPane>

+ 85
- 85
src/main/resources/settings.fxml View File

@@ -1,137 +1,137 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.paint.*?>
<?import java.net.*?>
<?import java.lang.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import java.net.URL?>
<TilePane prefHeight="240.0" prefWidth="702.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.uniluebeck.mi.projmi6.controller.SettingsController">
<TilePane xmlns:fx="http://javafx.com/fxml/1" prefHeight="240.0" prefWidth="702.0" xmlns="http://javafx.com/javafx/8"
fx:controller="de.uniluebeck.mi.projmi6.controller.SettingsController">
<children>
<!-- <VBox prefHeight="200.0" prefWidth="300.0" style="-fx-background-color: white; -fx-background-radius: 10;" styleClass="settings-box">
<children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="MySQL-Datenbank">
<font>
<Font size="18.0" />
</font>
<VBox.margin>
<Insets bottom="10.0" />
</VBox.margin>
</Text>
<GridPane>
<children>
<Label text="JDBC-Serveradresse:" />
<Label text="Benutzername:" GridPane.rowIndex="1" />
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text" GridPane.columnIndex="1" />
<TextField fx:id="opsServerIp1" GridPane.columnIndex="1" />
<TextField fx:id="opsServerCode1" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Kennwort:" GridPane.rowIndex="2" />
<TextField GridPane.columnIndex="1" GridPane.rowIndex="2" />
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
<HBox alignment="BOTTOM_RIGHT" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="opsServerSave1" alignment="CENTER_RIGHT" mnemonicParsing="false" text="Speichern" />
</children>
</HBox>
</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
<TilePane.margin>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
</TilePane.margin>
</VBox> -->
<VBox prefHeight="200.0" prefWidth="300.0" style="-fx-background-color: white; -fx-background-radius: 10;" styleClass="settings-box">
<!-- <VBox prefHeight="200.0" prefWidth="300.0" style="-fx-background-color: white; -fx-background-radius: 10;" styleClass="settings-box">
<children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="MySQL-Datenbank">
<font>
<Font size="18.0" />
</font>
<VBox.margin>
<Insets bottom="10.0" />
</VBox.margin>
</Text>
<GridPane>
<children>
<Label text="JDBC-Serveradresse:" />
<Label text="Benutzername:" GridPane.rowIndex="1" />
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text" GridPane.columnIndex="1" />
<TextField fx:id="opsServerIp1" GridPane.columnIndex="1" />
<TextField fx:id="opsServerCode1" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Kennwort:" GridPane.rowIndex="2" />
<TextField GridPane.columnIndex="1" GridPane.rowIndex="2" />
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
</GridPane>
<HBox alignment="BOTTOM_RIGHT" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="opsServerSave1" alignment="CENTER_RIGHT" mnemonicParsing="false" text="Speichern" />
</children>
</HBox>
</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
<TilePane.margin>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
</TilePane.margin>
</VBox> -->
<VBox prefHeight="200.0" prefWidth="300.0" style="-fx-background-color: white; -fx-background-radius: 10;"
styleClass="settings-box">
<children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="OPS-Server">
<font>
<Font size="18.0" />
<Font size="18.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" />
<Insets bottom="10.0"/>
</VBox.margin>
</Text>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<Label text="OPS-Sever:" />
<Label text="Port:" GridPane.rowIndex="1" />
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text" GridPane.columnIndex="1" />
<TextField fx:id="opsServerIp" GridPane.columnIndex="1" />
<TextField fx:id="opsServerPort" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="OPS-Sever:"/>
<Label text="Port:" GridPane.rowIndex="1"/>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text" GridPane.columnIndex="1"/>
<TextField fx:id="opsServerIp" GridPane.columnIndex="1"/>
<TextField fx:id="opsServerPort" GridPane.columnIndex="1" GridPane.rowIndex="1"/>
</children>
</GridPane>
<HBox alignment="BOTTOM_RIGHT" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="opsServerSave" alignment="CENTER_RIGHT" mnemonicParsing="false" text="Speichern" />
<Button fx:id="opsServerSave" alignment="CENTER_RIGHT" mnemonicParsing="false"
text="Speichern"/>
</children>
</HBox>
</children>
<TilePane.margin>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/>
</TilePane.margin>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
</VBox>

<VBox prefHeight="200.0" prefWidth="300.0" style="-fx-background-color: white; -fx-background-radius: 10;" styleClass="settings-box">
<VBox prefHeight="200.0" prefWidth="300.0" style="-fx-background-color: white; -fx-background-radius: 10;"
styleClass="settings-box">
<children>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="KIS Gruppe 6">
<font>
<Font size="18.0" />
<Font size="18.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" />
<Insets bottom="10.0"/>
</VBox.margin>
</Text>
<Label text="Eine Projeketarbeit von:">
<VBox.margin>
<Insets bottom="6.0" />
</VBox.margin>
</Label>
<Label text=" - Ileana Krontsi" />
<Label layoutX="20.0" layoutY="71.0" text=" - Natascha Koch" />
<Label layoutX="20.0" layoutY="88.0" text=" - Johannes Oehm" />
<Label layoutX="20.0" layoutY="105.0" text=" - Nils Dittberner" />
<Label text="Projektpraktikum Medizinische Informatik">
<VBox.margin>
<Insets top="10.0" />
</VBox.margin>
</Label>
<Label layoutX="20.0" layoutY="155.0" text="Wintersemester 2015/16" textFill="#777777" />
<Label layoutX="20.0" layoutY="172.0" text="Universität zu Lübeck" textFill="#777777" />
<Label text="Eine Projeketarbeit von:">
<VBox.margin>
<Insets bottom="6.0"/>
</VBox.margin>
</Label>
<Label text=" - Ileana Krontsi"/>
<Label layoutX="20.0" layoutY="71.0" text=" - Natascha Koch"/>
<Label layoutX="20.0" layoutY="88.0" text=" - Johannes Oehm"/>
<Label layoutX="20.0" layoutY="105.0" text=" - Nils Dittberner"/>
<Label text="Projektpraktikum Medizinische Informatik">
<VBox.margin>
<Insets top="10.0"/>
</VBox.margin>
</Label>
<Label layoutX="20.0" layoutY="155.0" text="Wintersemester 2015/16" textFill="#777777"/>
<Label layoutX="20.0" layoutY="172.0" text="Universität zu Lübeck" textFill="#777777"/>

</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
<TilePane.margin>
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0" />
<Insets bottom="20.0" left="20.0" right="20.0" top="20.0"/>
</TilePane.margin>
</VBox>
</children>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</TilePane>

+ 33
- 26
src/main/resources/stationshistorie.fxml View File

@@ -1,39 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import java.net.* ?>
<?import java.lang.*?>

<?import de.uniluebeck.mi.projmi6.view.DateTimePicker?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import de.uniluebeck.mi.projmi6.view.*?>
<SplitPane fx:controller="de.uniluebeck.mi.projmi6.controller.StationsHistorieController" dividerPositions="0.45" xmlns="http://javafx.com/javafx/8"
xmlns:fx="http://javafx.com/fxml/1">
<?import java.net.URL?>
<SplitPane xmlns:fx="http://javafx.com/fxml/1"
fx:controller="de.uniluebeck.mi.projmi6.controller.StationsHistorieController"
dividerPositions="0.45"
xmlns="http://javafx.com/javafx/8">
<items>
<VBox>
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Button mnemonicParsing="false" text="Neuen Aufenthalt erstellen" fx:id="btnStatHistCreate" onAction="#clickedCreateAufenthalt"/>
<Button mnemonicParsing="false" text="Neuen Aufenthalt erstellen" fx:id="btnStatHistCreate"
onAction="#clickedCreateAufenthalt"/>
</items>
</ToolBar>
<TableView prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" fx:id="tblStationsHistorie" >
<TableView prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" fx:id="tblStationsHistorie">
<columns>
<TableColumn prefWidth="75.0" text="Station" fx:id="colStatHistStation"/>
<TableColumn prefWidth="75.0" text="Aufnahme" fx:id="colStatHistAufnahmeDatum"/>
<TableColumn prefWidth="75.0" text="Entlassung" fx:id="colStatHistEntlassungsDatum"/>
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY"/>
</columnResizePolicy>
</TableView>
</children>
</VBox>
<VBox>
<children>
<GridPane VBox.vgrow="ALWAYS" fx:id="fields" styleClass="fields">
<GridPane VBox.vgrow="ALWAYS" fx:id="fields" styleClass="fields">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
@@ -46,25 +45,29 @@
</rowConstraints>
<children>
<Label text="Abteilung:"/>
<ComboBox prefWidth="150.0" GridPane.columnIndex="1" fx:id="cmbAbteilung"/>
<ComboBox prefWidth="150.0" GridPane.columnIndex="1" fx:id="cmbAbteilung"/>

<Label text="Station:" GridPane.rowIndex="1"/>
<ComboBox prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="1" fx:id="cmbStation"/>

<Label text="Aufnahmedatum / -Zeit:" GridPane.rowIndex="2" />
<Label text="Aufnahmedatum / -Zeit:" GridPane.rowIndex="2"/>
<DateTimePicker GridPane.columnIndex="1" GridPane.rowIndex="2" fx:id="dtTmAufnahme"/>

<Label text="Entlassungsdatum/ -Zeit:" GridPane.rowIndex="3"/>
<DateTimePicker GridPane.columnIndex="1" GridPane.rowIndex="3" fx:id="dtTmEntlassung"/>
<DateTimePicker GridPane.columnIndex="1" GridPane.rowIndex="3" fx:id="dtTmEntlassung"/>
</children>
</GridPane>
<HBox alignment="CENTER_RIGHT">
<children>
<Button mnemonicParsing="false" text="Bearbeiten" onAction="#clickedEdit" fx:id="btnStatHistEdit"/>
<Button mnemonicParsing="false" text="Abbrechen" onAction="#clickedAbort" fx:id="btnStatHistAbort"/>
<Button mnemonicParsing="false" text="Speichern" onAction="#clickedSave" fx:id="btnStatHistSave"/>
<Button mnemonicParsing="false" text="Entfernen" onAction="#clickedDelete" fx:id="btnStatHistDelete"/>
<!-- <Button disable="true" mnemonicParsing="false" text="Eintrag entfernen" fx:id="btnStatHistCancel" onAction="#clickedCancel"/> -->
<Button mnemonicParsing="false" text="Bearbeiten" onAction="#clickedEdit"
fx:id="btnStatHistEdit"/>
<Button mnemonicParsing="false" text="Abbrechen" onAction="#clickedAbort"
fx:id="btnStatHistAbort"/>
<Button mnemonicParsing="false" text="Speichern" onAction="#clickedSave"
fx:id="btnStatHistSave"/>
<Button mnemonicParsing="false" text="Entfernen" onAction="#clickedDelete"
fx:id="btnStatHistDelete"/>
<!-- <Button disable="true" mnemonicParsing="false" text="Eintrag entfernen" fx:id="btnStatHistCancel" onAction="#clickedCancel"/> -->
</children>
</HBox>
<GridPane>
@@ -73,10 +76,14 @@
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.rowIndex="1"/>
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.rowIndex="2"/>
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.rowIndex="3"/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="0" fx:id="statHistCreator" text=""/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="1" fx:id="statHistCreateTime" text=""/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="2" fx:id="statHistEditor" text=""/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="3" fx:id="statHistEditTime" text=""/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="0"
fx:id="statHistCreator" text=""/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="1"
fx:id="statHistCreateTime" text=""/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="2"
fx:id="statHistEditor" text=""/>
<Label styleClass="ersteller-value" GridPane.columnIndex="1" GridPane.rowIndex="3"
fx:id="statHistEditTime" text=""/>
</children>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0"/>
@@ -93,6 +100,6 @@
</VBox>
</items>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</SplitPane>

+ 17
- 12
src/main/resources/style.css View File

@@ -3,15 +3,14 @@
}

.ersteller-value {
/* -fx-text-fill: red; */
/* -fx-text-fill: red; */
}

DateTimePicker .text-field{
-fx-background-color:transparent;
DateTimePicker .text-field {
-fx-background-color: transparent;
}


.fields:disabled{
.fields:disabled {
-fx-opacity: 1;
}

@@ -19,40 +18,46 @@ DateTimePicker .text-field{
-fx-opacity: 1;
}

.fields:disabled .text-field{
.fields:disabled .text-field {
-fx-text-fill: black;
-fx-background-color: transparent;
-fx-opacity: 1;
}

.fields:disabled .label{
.fields:disabled .label {
-fx-opacity: 1;
}
.fields:disabled ComboBox{

.fields:disabled ComboBox {
-fx-opacity: 1;
-fx-background-color: transparent;
-fx-text-fill: black;
}
.fields:disabled .list-cell{

.fields:disabled .list-cell {
-fx-opacity: 1;
-fx-background-color: transparent;
-fx-text-fill: black;
}

.fields:disabled .time-picker {
-fx-background-color: transparent;
}

.fields:disabled .arrow-button{
.fields:disabled .arrow-button {
-fx-opacity: 0;
}
.fields:disabled .arrow{

.fields:disabled .arrow {
-fx-opacity: 0;
}

.fields:disabled .date-picker {
-fx-opacity: 1;
-fx-background-color: transparent;
}

.fields:disabled .now-button {
visibility: hidden;
visibility: hidden;
}


+ 51
- 36
src/main/resources/untersuchungen.fxml View File

@@ -1,82 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>

<?import de.uniluebeck.mi.projmi6.view.DateTimePicker?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import java.net.URL?>
<?import de.uniluebeck.mi.projmi6.view.DateTimePicker?>
<SplitPane xmlns:fx="http://javafx.com/fxml/1" dividerPositions="0.45"
xmlns="http://javafx.com/javafx/8" fx:controller="de.uniluebeck.mi.projmi6.controller.UntersuchungenController">
xmlns="http://javafx.com/javafx/8"
fx:controller="de.uniluebeck.mi.projmi6.controller.UntersuchungenController">
<items>
<VBox>
<children>
<ToolBar prefHeight="40.0" prefWidth="200.0">
<items>
<Button fx:id="btnUntsCreate" mnemonicParsing="false" onAction="#clickedUntsCreate" text="Neue Untersuchung erstellen" />
<Button fx:id="btnUntsCreate" mnemonicParsing="false" onAction="#clickedUntsCreate"
text="Neue Untersuchung erstellen"/>
</items>
</ToolBar>
<ListView fx:id="untsList" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS" />
<ListView fx:id="untsList" prefHeight="200.0" prefWidth="200.0" VBox.vgrow="ALWAYS"/>
</children>
</VBox>
<VBox prefHeight="200.0" prefWidth="100.0">
<children>
<GridPane vgap="5.0" styleClass="fields" fx:id="fields">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="40.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="40.0" prefWidth="100.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<Label text="OPS-Code:" />
<ComboBox fx:id="untsOpsCode" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1" />
<Label text="OPS-Code:"/>
<ComboBox fx:id="untsOpsCode" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1"/>

<Label text="Durchführender Arzt:" GridPane.rowIndex="1" />
<ComboBox fx:id="untsArzt" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Durchführender Arzt:" GridPane.rowIndex="1"/>
<ComboBox fx:id="untsArzt" maxWidth="1.7976931348623157E308" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>

<Label text="Untersuchungszeitpunkt:" GridPane.rowIndex="2" />
<DateTimePicker fx:id="dtTmUntersuchungszeitpunkt" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label text="Untersuchungszeitpunkt:" GridPane.rowIndex="2"/>
<DateTimePicker fx:id="dtTmUntersuchungszeitpunkt" GridPane.columnIndex="1"
GridPane.rowIndex="2"/>
</children>
</GridPane>
<HBox alignment="TOP_RIGHT" prefHeight="100.0" prefWidth="200.0" spacing="5.0" VBox.vgrow="ALWAYS">
<children>
<Button fx:id="btnUntsCancel" mnemonicParsing="false" onAction="#clickedUntsCancel" text="Storno" />
<Button fx:id="btnUntsAbort" mnemonicParsing="false" onAction="#clickedUntsAbort" text="Abbrechen" />
<Button fx:id="btnUntsSave" mnemonicParsing="false" onAction="#clickedUntsSave" text="Speichern" />
<Button fx:id="btnUntsCancel" mnemonicParsing="false" onAction="#clickedUntsCancel"
text="Storno"/>
<Button fx:id="btnUntsAbort" mnemonicParsing="false" onAction="#clickedUntsAbort"
text="Abbrechen"/>
<Button fx:id="btnUntsSave" mnemonicParsing="false" onAction="#clickedUntsSave"
text="Speichern"/>
</children>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0"/>
</padding>
</HBox>
<GridPane>
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0"/>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="50.0"/>
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
<RowConstraints minHeight="10.0" vgrow="SOMETIMES"/>
</rowConstraints>
<children>
<Label styleClass="ersteller-label" text="Ersteller:" GridPane.columnIndex="0" GridPane.rowIndex="0" />
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.columnIndex="0" GridPane.rowIndex="1" />
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.columnIndex="0" GridPane.rowIndex="2" />
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.columnIndex="0" GridPane.rowIndex="3" />
<Label styleClass="ersteller-value" fx:id="untsCreator" text="" GridPane.columnIndex="1" GridPane.rowIndex="0" />
<Label styleClass="ersteller-value" fx:id="untsCreateTime" text="" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label styleClass="ersteller-value" fx:id="untsChanger" text="" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label styleClass="ersteller-value" fx:id="untsChangeTime" text="" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label styleClass="ersteller-label" text="Ersteller:" GridPane.columnIndex="0"
GridPane.rowIndex="0"/>
<Label styleClass="ersteller-label" text="Erstelldatum:" GridPane.columnIndex="0"
GridPane.rowIndex="1"/>
<Label styleClass="ersteller-label" text="Letzter Bearbeiter:" GridPane.columnIndex="0"
GridPane.rowIndex="2"/>
<Label styleClass="ersteller-label" text="Letzte Änderung:" GridPane.columnIndex="0"
GridPane.rowIndex="3"/>
<Label styleClass="ersteller-value" fx:id="untsCreator" text="" GridPane.columnIndex="1"
GridPane.rowIndex="0"/>
<Label styleClass="ersteller-value" fx:id="untsCreateTime" text="" GridPane.columnIndex="1"
GridPane.rowIndex="1"/>
<Label styleClass="ersteller-value" fx:id="untsChanger" text="" GridPane.columnIndex="1"
GridPane.rowIndex="2"/>
<Label styleClass="ersteller-value" fx:id="untsChangeTime" text="" GridPane.columnIndex="1"
GridPane.rowIndex="3"/>
</children>
</GridPane>
</children>
</VBox>
</items>
<stylesheets>
<URL value="@style.css" />
<URL value="@style.css"/>
</stylesheets>
</SplitPane>

Loading…
Cancel
Save