diff --git a/src/main/java/de/uniluebeck/mi/projmi6/hapi2/HL7Receiver2.java b/src/main/java/de/uniluebeck/mi/projmi6/hapi2/HL7Receiver2.java index b3d9f46..d153e5a 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/hapi2/HL7Receiver2.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/hapi2/HL7Receiver2.java @@ -18,6 +18,7 @@ import de.uniluebeck.mi.projmi6.model.*; import java.io.IOException; import java.sql.SQLException; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -85,11 +86,14 @@ public class HL7Receiver2 implements ReceivingApplica Patient patient = mainctrl.getStammdaten().getPatienten().stream().filter(p -> p.getPatID() == patid).findFirst().orElse(null); if (patient == null) { + logHL7MessageToDatabase(message, msh, metadata); return generateACKWithAR(message, "Patient nicht gefunden."); } List visits = bar_p05.getVISITAll(); + List updatedFallIDs = new ArrayList<>(); + // Ab hier wird es dirty. for (BAR_P05_VISIT visit : visits) { PV1 pv1 = visit.getPV1(); @@ -102,6 +106,7 @@ public class HL7Receiver2 implements ReceivingApplica e.printStackTrace(); } if (fallids.isEmpty() || !fallids.contains(fallid)) { + logHL7MessageToDatabase(message, msh, metadata); return generateACKWithAR(message, "Fall nicht gefunden."); } @@ -136,6 +141,7 @@ public class HL7Receiver2 implements ReceivingApplica // TODO: Oder einfach ueberspringen? continue; // TODO: Behandeln von sonder Codes. K35.9V (Verdacht...) + // logHL7MessageToDatabase(message, msh, metadata); // return generateACKWithAR(message, "ICD10 Code nicht gefunden."); } diagnose.setIcd10code(icd10code); @@ -146,6 +152,7 @@ public class HL7Receiver2 implements ReceivingApplica String einweisenderarzt = dg1.getDiagnosingClinician(0).encode(); // Wir holen uns immer den ersten der verantwortlichen Aerzte... // (DG1-16) mitarbeiter = mainctrl.getStammdaten().getMitarbeiter().stream().filter(m -> m.getEinweisenderArzt().equals(einweisenderarzt)).findFirst().orElse(null); if (mitarbeiter == null) { + logHL7MessageToDatabase(message, msh, metadata); return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); } } else { @@ -182,6 +189,7 @@ public class HL7Receiver2 implements ReceivingApplica // TODO: Oder einfach ueberspringen? continue; // TODO: Behandeln von sonder Codes. + // logHL7MessageToDatabase(message, msh, metadata); // return generateACKWithAR(message, "OPS Code nicht gefunden."); } untersuchung.setOpscode(opscode); @@ -194,6 +202,7 @@ public class HL7Receiver2 implements ReceivingApplica String einweisenderarzt = pr1.getProcedurePractitioner(0).encode(); // Wir holen uns immer den ersten der verantwortlichen Aerzte... mitarbeiter = mainctrl.getStammdaten().getMitarbeiter().stream().filter(m -> m.getEinweisenderArzt().equals(einweisenderarzt)).findFirst().orElse(null); if (mitarbeiter == null) { + logHL7MessageToDatabase(message, msh, metadata); return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); } } else { @@ -220,16 +229,15 @@ public class HL7Receiver2 implements ReceivingApplica e.printStackTrace(); } }); + + // Remember welche Faelle geaendert wurden + updatedFallIDs.add(fallid); } // HL7 Nachricht loggen. - try { - String sendind_ip = metadata.get("SENDING_IP").toString(); - String sendind_port = metadata.get("SENDING_PORT").toString(); - DBHandler.setHL7Nachricht(message.encode(), HL7Util2.parseLocalDateTime(msh.getDateTimeOfMessage().getTime()), sendind_ip + ":" + sendind_port); - } catch (SQLException e) { - e.printStackTrace(); - } + logHL7MessageToDatabase(message, msh, metadata); + // TODO: Runnable...??? Jojo??? + //updatedFallIDs.forEach(id -> mainctrl.getMessageController().addMessage(new HL7Message(patient, id, LocalDateTime.now(), "Was soll hier wohl stehen?", false))); return generateACK(message); } @@ -242,4 +250,16 @@ public class HL7Receiver2 implements ReceivingApplica return generateACK(message); } + private void logHL7MessageToDatabase(Message message, MSH msh, Map metadata) throws HL7Exception { + try { + String sendind_ip = metadata.get("SENDING_IP").toString(); + String sendind_port = metadata.get("SENDING_PORT").toString(); + LocalDateTime ldt = HL7Util2.parseLocalDateTime(msh.getDateTimeOfMessage().getTime()); + DBHandler.setHL7Nachricht(message.encode(), ldt, sendind_ip + ":" + sendind_port); + } catch (SQLException e) { + e.printStackTrace(); + } + + } + }