| @@ -18,6 +18,7 @@ import de.uniluebeck.mi.projmi6.model.*; | |||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.sql.SQLException; | import java.sql.SQLException; | ||||
| import java.time.LocalDateTime; | |||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | 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); | Patient patient = mainctrl.getStammdaten().getPatienten().stream().filter(p -> p.getPatID() == patid).findFirst().orElse(null); | ||||
| if (patient == null) { | if (patient == null) { | ||||
| logHL7MessageToDatabase(message, msh, metadata); | |||||
| return generateACKWithAR(message, "Patient nicht gefunden."); | return generateACKWithAR(message, "Patient nicht gefunden."); | ||||
| } | } | ||||
| List<BAR_P05_VISIT> visits = bar_p05.getVISITAll(); | List<BAR_P05_VISIT> visits = bar_p05.getVISITAll(); | ||||
| List<Integer> updatedFallIDs = new ArrayList<>(); | |||||
| // Ab hier wird es dirty. | // Ab hier wird es dirty. | ||||
| for (BAR_P05_VISIT visit : visits) { | for (BAR_P05_VISIT visit : visits) { | ||||
| PV1 pv1 = visit.getPV1(); | PV1 pv1 = visit.getPV1(); | ||||
| @@ -102,6 +106,7 @@ public class HL7Receiver2<T extends AbstractMessage> implements ReceivingApplica | |||||
| e.printStackTrace(); | e.printStackTrace(); | ||||
| } | } | ||||
| if (fallids.isEmpty() || !fallids.contains(fallid)) { | if (fallids.isEmpty() || !fallids.contains(fallid)) { | ||||
| logHL7MessageToDatabase(message, msh, metadata); | |||||
| return generateACKWithAR(message, "Fall nicht gefunden."); | return generateACKWithAR(message, "Fall nicht gefunden."); | ||||
| } | } | ||||
| @@ -136,6 +141,7 @@ public class HL7Receiver2<T extends AbstractMessage> implements ReceivingApplica | |||||
| // TODO: Oder einfach ueberspringen? | // TODO: Oder einfach ueberspringen? | ||||
| continue; | continue; | ||||
| // TODO: Behandeln von sonder Codes. K35.9V (Verdacht...) | // TODO: Behandeln von sonder Codes. K35.9V (Verdacht...) | ||||
| // logHL7MessageToDatabase(message, msh, metadata); | |||||
| // return generateACKWithAR(message, "ICD10 Code nicht gefunden."); | // return generateACKWithAR(message, "ICD10 Code nicht gefunden."); | ||||
| } | } | ||||
| diagnose.setIcd10code(icd10code); | 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) | 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); | mitarbeiter = mainctrl.getStammdaten().getMitarbeiter().stream().filter(m -> m.getEinweisenderArzt().equals(einweisenderarzt)).findFirst().orElse(null); | ||||
| if (mitarbeiter == null) { | if (mitarbeiter == null) { | ||||
| logHL7MessageToDatabase(message, msh, metadata); | |||||
| return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); | return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); | ||||
| } | } | ||||
| } else { | } else { | ||||
| @@ -182,6 +189,7 @@ public class HL7Receiver2<T extends AbstractMessage> implements ReceivingApplica | |||||
| // TODO: Oder einfach ueberspringen? | // TODO: Oder einfach ueberspringen? | ||||
| continue; | continue; | ||||
| // TODO: Behandeln von sonder Codes. | // TODO: Behandeln von sonder Codes. | ||||
| // logHL7MessageToDatabase(message, msh, metadata); | |||||
| // return generateACKWithAR(message, "OPS Code nicht gefunden."); | // return generateACKWithAR(message, "OPS Code nicht gefunden."); | ||||
| } | } | ||||
| untersuchung.setOpscode(opscode); | 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... | 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); | mitarbeiter = mainctrl.getStammdaten().getMitarbeiter().stream().filter(m -> m.getEinweisenderArzt().equals(einweisenderarzt)).findFirst().orElse(null); | ||||
| if (mitarbeiter == null) { | if (mitarbeiter == null) { | ||||
| logHL7MessageToDatabase(message, msh, metadata); | |||||
| return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); | return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); | ||||
| } | } | ||||
| } else { | } else { | ||||
| @@ -220,16 +229,15 @@ public class HL7Receiver2<T extends AbstractMessage> implements ReceivingApplica | |||||
| e.printStackTrace(); | e.printStackTrace(); | ||||
| } | } | ||||
| }); | }); | ||||
| // Remember welche Faelle geaendert wurden | |||||
| updatedFallIDs.add(fallid); | |||||
| } | } | ||||
| // HL7 Nachricht loggen. | // 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); | return generateACK(message); | ||||
| } | } | ||||
| @@ -242,4 +250,16 @@ public class HL7Receiver2<T extends AbstractMessage> implements ReceivingApplica | |||||
| return generateACK(message); | 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(); | |||||
| } | |||||
| } | |||||
| } | } | ||||