| @@ -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<T extends AbstractMessage> 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<BAR_P05_VISIT> visits = bar_p05.getVISITAll(); | |||
| List<Integer> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> implements ReceivingApplica | |||
| return generateACK(message); | |||
| } | |||
| private void logHL7MessageToDatabase(Message message, MSH msh, Map<String, Object> 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(); | |||
| } | |||
| } | |||
| } | |||