Commit c862580d authored by Julia Fischer's avatar Julia Fischer

BUGFIX: \n und \r durch System.lineSeparator() ersetzt

parent 04c48204
Pipeline #2865 skipped
......@@ -5,17 +5,9 @@ import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import edu.stanford.nlp.classify.Classifier;
import edu.stanford.nlp.classify.ColumnDataClassifier;
import edu.stanford.nlp.ling.Datum;
public class MedReportSplitter {
public static final String REGEXP_DIAGNOSE = "Diagnose\\({0,1}[n]{0,1}\\){0,1}";
......@@ -26,28 +18,24 @@ public class MedReportSplitter {
// ArrayList mit allen Diagnosen
private ArrayList<String> diagnosen = new ArrayList<String>();
public MedReportSplitter(String PATH) throws IOException {
// Arztbrief in String einlesen
String arztBriefAsString = new String(Files.readAllBytes(Paths.get(PATH)));
// Arztbrief einlesen, Struktur (Absatzname und Absatztext) in map
// speichern und Diagnosen in ArrayList speichern
readMedLetter(arztBriefAsString);
readMedLetter(arztBriefAsString);
// DEBUG Ausgabe der Diagnosen
System.out.println("DBG: MedReportSplit.java - Diagnosen aus " + PATH );
for(String diag: diagnosen){
System.out.println("DBG: MedReportSplit.java - Diagnosen aus " + PATH);
for (String diag : diagnosen) {
System.out.println(diag);
}
/* DEBUG
//Ausgabe der Brief-Struktur
System.out.println("Struktur aus " + PATH + ":");
printStructure(map);
*/
/*
* DEBUG //Ausgabe der Brief-Struktur System.out.println("Struktur aus "
* + PATH + ":"); printStructure(map);
*/
}
private void readMedLetter(String arztBriefAsStr) {
......@@ -58,98 +46,88 @@ public class MedReportSplitter {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Identifizieren der Strukturwörter (Diagnose, Anamnese,...) der
// Briefe. Annahme ist, dass diese eindeutig durch Wörter mit
// anschließendem Doppelpunkt erkannt werden können.
Pattern pattern1 = Pattern.compile("\n\n+.*[:]");
Pattern pattern1 = Pattern.compile(System.lineSeparator() + System.lineSeparator() + "+.*[:]");
// Gesamten Arzt-Brief-String zerteilen an den Strukturwörtern;
// Strukturwort bleibt im Teilstring.
String[] splittedLetter = arztBriefAsString.split("(?=\n\n+.*[:])");
String[] splittedLetter = arztBriefAsString
.split("(?=" + System.lineSeparator() + System.lineSeparator() + "+.*[:])");
// Durchlaufen der gesplitteten Strings (z.B. "Diagnose: Text") und
// Trennung am Doppelpunkt ergibt jeweils Strukturwort und Text des
// Absatzes. Diese werden als KEY und VALUE in einer Map gespeichert
for (String retval : splittedLetter) {
Matcher m1 = pattern1.matcher(retval);
String keyValString[] = retval.split(":", 2);
while (m1.find()) {
map.put(keyValString[0].replace("\n\n", ""), keyValString[1]);
map.put(keyValString[0].replace(System.lineSeparator() + System.lineSeparator(), ""), keyValString[1]);
}
}
// Pattern für die Erkennung des Diagnose-Absatzes
Pattern patternDIAG = Pattern.compile(REGEXP_DIAGNOSE);
String[] tempDiag = null;
// Durchlaufen der Map und Suche nach Diagnose. Realisiserung mit
// Pattern, da unterschiedliche Schreibweisen vorhanden
for (String key : map.keySet()) {
Matcher mDIAG = patternDIAG.matcher(key);
// Wenn KEY für Absatz "Diagnose" gefunden wird der zugehörige Text
// mit den einzelnen Diagnosen aus dem zugehörigen VALUE der Map
// gelesen und zeilenweise in ein Array geschrieben
if (mDIAG.find()) {
String value = map.get(key);
tempDiag = value.split("\n");
tempDiag = value.split(System.lineSeparator());
}
}
// Array tempDiag enthält neben den Diagnosen auch leere Einträge, diese
// werden hier entfernt und alle Diagnosen in eine ArrayList
// geschrieben. Mit der Funktion getICDCode() wird der ICD-Code anhand
// des Diagnose-Namens ermittelt
int id = 1;
for (String diag : tempDiag) {
diag = diag.replace("\r", "");
diag = diag.replace(System.lineSeparator(), "");
if (diag.length() > 0) {
diagnosen.add(diag.trim());
}
}
}
/* DEBUG
* Ausgabe aus JSON
public static void printJSON(ArrayList<Diagnose> diagnosen) {
Gson gson = new GsonBuilder().create();
for (int i = 0; i < diagnosen.size(); i++) {
String json = gson.toJson(diagnosen.get(i));
System.out.println(json);
}
}
DEBUG
* Ausgabe der Brief-Struktur
public static void printStructure(Map<String, String> map) {
System.out.println("--------------------------------------------");
for (String key : map.keySet()) {
System.out.println("ABSATZ: " + key);
System.out.println("--------------------------------------------");
System.out.println("TEXT: " + map.get(key));
System.out.println("--------------------------------------------");
}
}
/*
* DEBUG Ausgabe aus JSON
*
* public static void printJSON(ArrayList<Diagnose> diagnosen) { Gson gson =
* new GsonBuilder().create(); for (int i = 0; i < diagnosen.size(); i++) {
* String json = gson.toJson(diagnosen.get(i)); System.out.println(json); }
*
* }
*
* DEBUG Ausgabe der Brief-Struktur
*
* public static void printStructure(Map<String, String> map) {
* System.out.println("--------------------------------------------"); for
* (String key : map.keySet()) {
*
* System.out.println("ABSATZ: " + key);
* System.out.println("--------------------------------------------");
* System.out.println("TEXT: " + map.get(key));
* System.out.println("--------------------------------------------"); } }
*/
public ArrayList<String> getDiagnosen(){
public ArrayList<String> getDiagnosen() {
return diagnosen;
}
}
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