Kommentare hinzugefügt und infofenster, damit der user weiß dass er auf...

Kommentare hinzugefügt und infofenster, damit der user weiß dass er auf diagnosen klicken muss um weitere infos zu erhalten
parent a5c9e2d0
Pipeline #3231 skipped
......@@ -61,6 +61,7 @@ public class Uebung7GUI1 extends Application {
public static final String HOCHGELADEN = " wurde hochgeladen.";
public static final String FENSTER_TITEL = "Uebungsblatt 7 + 8";
public static final String GEFUNDENE_DIAGNOSE = "Gefundene Diagnose(n): ";
//public static final String DIAGNOSE_ANKLICKEN = "Klicken sie ";
private static String arztBriefName = "";
private static HBox topHBoxForUploadingArztBrief = null;
public static boolean diagnoseIsAnalyzed = false;
......@@ -126,6 +127,9 @@ public class Uebung7GUI1 extends Application {
borderPane.setRight(rightVBox);
// display box
primaryStage.show();
}
public static void analayzeArztbrief(Button buttonAnalyzeBrief) {
......@@ -145,8 +149,8 @@ public class Uebung7GUI1 extends Application {
alert.showAndWait();
} else {
try {
// clear diagnoses from previous brief before analysing
// the next one
// Vor der Analyse eines Briefes muss ein vorher eventuell bereits bestehender
// Baum aus der TreeView gelöscht werden
removeTreeItemsFromCurrentTree();
removeTreeItemsFromSecondTree();
// Arztbrief ans Backend übergeben, wenn Auswahl
......@@ -155,10 +159,6 @@ public class Uebung7GUI1 extends Application {
System.out.println("BDG Uebung7" + arztBriefName);
MedReportSplitter reportSplit = new MedReportSplitter(arztBriefName);
// For FINAL VER
// MedReportSplitter reportSplit = new
// MedReportSplitter(arztbrief);
DBSearch search = new DBSearch(reportSplit.getDiagnosen());
for (String diagnose : reportSplit.getDiagnosen()) {
List<AlphaID> diagnoseList = search.getDiagnose(diagnose);
......@@ -230,13 +230,25 @@ public class Uebung7GUI1 extends Application {
}
// Arztbrief wurde analysiert, boolean wird auf true gesetzt
diagnoseIsAnalyzed = true;
if(diagnoseIsAnalyzed) {
Alert alert = new Alert(AlertType.INFORMATION);
alert.setTitle("Analyse erfolgreich");
alert.setHeaderText(null);
alert.setContentText("Der Arztbrief wurde erfolgreich analysiert.\n"
+ "Klicken sie auf eine Diagnose um weitere Informationen zu erhalten.");
Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK );
okButton.setDefaultButton(false);
alert.showAndWait();
}
selectTreeItem();
}
});
}
/**
* Methode benutzt zum Hochladen eines Arztbriefes.
* Methode die zum Hochladen eines Arztbriefes benutzt wird.
*
* @param buttonUploadBrief
* @param fileChooser
......@@ -259,8 +271,10 @@ public class Uebung7GUI1 extends Application {
});
}
/*
* Method benutzt zum Exportieren der diagnosen als JSON
/**
* Methode, die zum Exportieren der Diagnosen als JSON benutzt wird
* @param buttonExportDiagnosenAsJson
* @param primaryStage
*
*/
public static void exportDiagnoseAsJSONFile(Button buttonExportDiagnosenAsJson, Stage primaryStage) {
......@@ -293,7 +307,7 @@ public class Uebung7GUI1 extends Application {
alert.setTitle("Achtung");
alert.setHeaderText(null);
alert.setContentText(
"Arztbriefanalyse muss erst stattfinden, bevor das Exportieren der Diagnosen!");
"Arztbriefanalyse muss erst stattfinden, bevor die Diagnosen exportiert werden können");
alert.showAndWait();
}
......@@ -305,7 +319,7 @@ public class Uebung7GUI1 extends Application {
}
/**
* Creates a VBox for the upload & analyze button
* Erstellt eine VBOX für den Upload und Analyze Button
*
* @return vBox
*/
......@@ -338,7 +352,7 @@ public class Uebung7GUI1 extends Application {
}
/**
* Creates a HBox for the export button
* Erstellt eine HBOX für den Export Button
*
* @return hBox
*/
......@@ -352,8 +366,8 @@ public class Uebung7GUI1 extends Application {
}
/**
* Create left VBox where the found diagnoses will be displayed in tree
* form.
* Erstellt die link VBOX in der die aus dem Arztbrief identifizierten Diagnosen in einer
* TreeView dargestellt werden
*
* @return
*/
......@@ -366,6 +380,12 @@ public class Uebung7GUI1 extends Application {
return leftVBox;
}
/**
* Erstellt die rechte VBOX in der die zusätzlichen Infos aus Wikidata zu einer Diagnose in einer
* zweiten TreeView dargestellt werden
*
* @return
*/
public static VBox createRightVBox() {
VBox rightVBox1 = new VBox();
rightVBox1.setPadding(standardDimensions);
......@@ -383,7 +403,7 @@ public class Uebung7GUI1 extends Application {
}
/**
* Helper method used in order to successfully open a file
* Diese Helper-Methode ist für das erfolgreiche Öffnen eines Arztbriefes zuständig
*
* @param fileChooser
*/
......@@ -394,7 +414,7 @@ public class Uebung7GUI1 extends Application {
}
/**
* Helper method used in order to create the tree view
* Diese Helper-Methode hilt beim Erstellen der TreeView
*
*/
public static void treeViewUtils() {
......@@ -407,6 +427,10 @@ public class Uebung7GUI1 extends Application {
});
}
/**
* Diese Helper-Methode hilt beim Erstellen der TreeView für den zweiten Baum
*
*/
public static void treeViewDetailsUtils() {
rootSecondTree.setExpanded(true);
tree1 = new TreeView<>(rootSecondTree);
......@@ -417,12 +441,16 @@ public class Uebung7GUI1 extends Application {
});
}
/**
* Diese Methode schreibt den String, welcher die Diagnosen im JSON Format enthält in eine JSON-Datei
* @param file
*/
public static void saveFile(File file) {
try {
FileWriter fileWriter = new FileWriter(file);
// TEST STRING!
// Dieser String ist der Inhalt des JSON-Files
String content = getJsonString();
fileWriter.write(content);
......@@ -451,14 +479,21 @@ public class Uebung7GUI1 extends Application {
tmpTreeItem = item;
}
/**
* Methode, welche die Entity-Keys zum "root" Element hinzufügt
*
* @param title
* @param parent
*/
public static void createSecondTree(String title, TreeItem<String> parent) {
TreeItem<String> item = new TreeItem<>(title);
item.setExpanded(false);
parent.getChildren().add(item);
// tmpTreeItem speichert die aktuelle Diagnose,
// damit zu dieser die alphaId und der icdCode hinzugefügt werden können
// tmpTreeItem speichert das aktuelle Item,
// damit diesemm als (Parent)Item weitere (Child)Items hinzugefügt werden können
tmpSecondTreeItem = item;
}
......@@ -477,6 +512,12 @@ public class Uebung7GUI1 extends Application {
}
/**
* Methode, welche die Diagnosen zum "root" Element hinzufügt
*
* @param title
* @param parent
*/
public static TreeItem<String> makeBranchForSecondTree(String title) {
TreeItem<String> item = new TreeItem<>(title);
......@@ -503,6 +544,12 @@ public class Uebung7GUI1 extends Application {
}
/**
* Die zusätzlichen Informationen zu einer Diagnose aus Wikidata werden dem zweiten Baum hinzugefügt.
*
* @param itemKey
* @param properties
*/
public static void populateTreeWithDiagnosesDetails(String itemKey, Map<String, List<String>> properties) {
createSecondTree(itemKey, rootSecondTree);
......@@ -512,14 +559,21 @@ public class Uebung7GUI1 extends Application {
for(int i = 0; i < property.getValue().size(); i++) {
// Das erste Element (Element 0) wird immer als Parent genommen, der Rest als Kinder
/* Das erste Element (Element 0) wird immer als Parent genommen, der Rest als Kinder ..
* hierbei kommt es zu einer nicht homogenen Darstellung im Baum da zum einen
* das "PropertyLabel" dem "ValueType uri Value" untergeordnet sein kann und zum anderen
* eben das "ValueType uri Value" dem "PropertyLabel".
* Dies ist bedingt durch die nicht homogene Ordnung innerhalb des "Property"
*/
if(i == 0)
tmpItem = makeBranchForSecondTree(property.getValue().get(i));
else {
if(property.getValue().size() >= i) {
// Erstellt die Blätter im zweiten Baum
TreeItem<String> item = new TreeItem<>(property.getValue().get(i));
item.setExpanded(false);
tmpItem.getChildren().add(item);
......@@ -535,6 +589,9 @@ public class Uebung7GUI1 extends Application {
}
/**
*Diese Methode erstellt einen JSON-Konformen String aus den dargestellten Items der TreeView
*/
private static String getJsonString() {
String s = "{\"Diagnosen\":[\n";
......@@ -562,7 +619,7 @@ public class Uebung7GUI1 extends Application {
/**
* Methode welche alle Elemente des Trees loescht Dient als "reset" (z.b.
* bevor das Analysieren eines zweiten Briefes)
* vor dem Analysieren eines zweiten Briefes)
*/
public static void removeTreeItemsFromCurrentTree() {
if (tree != null ) {
......@@ -573,6 +630,12 @@ public class Uebung7GUI1 extends Application {
}
}
/**
* Analog zu der Methode "removeTreeItemsFromCurrentTree" loescht diese Methode alle Items des zweiten Baums,
* welche die Ergebnisse der WikiData-Suche darstellt.
* Dies ist notwendig wenn der User z.B. auf eine andere Diagnose klickt und somit ein anderer Baum angezeigt
* werden soll.
*/
public static void removeTreeItemsFromSecondTree() {
if (tree1 != null ) {
ObservableList<TreeItem<String>> treeItems = tree1.getRoot().getChildren();
......@@ -582,6 +645,15 @@ public class Uebung7GUI1 extends Application {
}
}
/**
* Die Methode "beobachtet" ob ein Item im ersten Baum mit den Diagnosen angeklickt wird.
* Ist dies der Fall wird die Methode auf Basis des ICD-Codes der angeklickten Diagnose die
* Methode "printResult" aufgerufen und das Ergebnise der damit einhergehenden Wikidata Suche in der
* "resultOutputMap" gespeichert.
* Konnten keine Ergebnisse zu der angeklickten Diagnose in Wikidata gefunden werden wird in einem
* "alert Window" darauf hingewiesen.
*
*/
public static void selectTreeItem() {
tree.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<TreeItem<String>>() {
......@@ -593,10 +665,12 @@ public class Uebung7GUI1 extends Application {
TreeItem<String> selectedItem = (TreeItem<String>) newValue;
String icdCodeInTree = selectedItem.getChildren().get(1).getValue();
String[] icdCode1 = icdCodeInTree.split(" ");
System.out.println("------------------------");
System.out.println("-----------test-------------");
String icdCode = icdCode1[1];
Map<String, Map<String, List<String>>> resultOutputMap = printResult(icdCode, selectedItem.getValue().toString());
// Wenn keine Informationen aus Wikidata gefunden werden konnten hat die Map die Größe 0
if(resultOutputMap.size() == 0)
{
Alert alert = new Alert(AlertType.INFORMATION);
......@@ -604,9 +678,10 @@ public class Uebung7GUI1 extends Application {
alert.setHeaderText(null);
alert.setContentText("Zu der ausgewählten Diagnose \"" + selectedItem.getValue() + "\" konnten keine "
+ "zusätzlichen Informationen aus Wiki-Data gefunden werden. Probieren sie es mit einer anderen Diagnose.");
Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK );
Button okButton = (Button) alert.getDialogPane().lookupButton(ButtonType.OK);
okButton.setDefaultButton(false);
alert.showAndWait();
}
for(Entry<String, Map<String, List<String>>> currentEntry: resultOutputMap.entrySet()) {
......@@ -625,6 +700,10 @@ public class Uebung7GUI1 extends Application {
});
}
/**
* Diese Methode führt eine Wikidatasearch auf Basis des ICD-Codes der angeklickten Diagnose durch und
* gibt das Ergebenis in einer "resultMap" zurück
*/
public static Map<String, Map<String, List<String>>> printResult(String icdCode, String itemName) {
Map<String, Map<String, List<String>>> resultMap = new HashMap<String, Map<String, List<String>>>();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment