From ee73e9b4374180b70ed4ec5dd999eae9a38b776a Mon Sep 17 00:00:00 2001 From: Nils Dittberner Date: Sun, 22 Nov 2015 12:59:11 +0100 Subject: [PATCH] Loggen der HL7 Nachrichten in die DB ausgelagert und refactored. --- .../de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java | 43 +++++----------------- .../de/uniluebeck/mi/projmi6/hapi/HL7Util.java | 33 +++++++++++++++++ 2 files changed, 42 insertions(+), 34 deletions(-) diff --git a/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java b/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java index 5ee5754..b716592 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java @@ -57,8 +57,7 @@ public class HL7Receiver implements ReceivingApplicat @Override public boolean canProcess(Message message) { - // TODO: Erstmal alles processen. - return message instanceof BAR_P05 || message instanceof ADT_A01; + return type.isInstance(message); } private Message generateACK(Message message) throws HL7Exception { @@ -87,7 +86,7 @@ public class HL7Receiver implements ReceivingApplicat Patient patient = mainctrl.getStammdaten().getPatienten().stream().filter(p -> p.getPatID() == patid).findFirst().orElse(null); if (patient == null) { - logInHL7MessageToDatabase(message, msh, metadata); + HL7Util.logInHL7MessageToDatabase(message, msh, metadata); updateUI(new HL7Message(null, -1, LocalDateTime.now(), "Patient nicht gefunden.", true)); return generateACKWithAR(message, "Patient nicht gefunden."); } // TODO: Patienten und Fall neu anlegen??? Nicht verlangt! @@ -108,7 +107,7 @@ public class HL7Receiver implements ReceivingApplicat e.printStackTrace(); } if (fallids.isEmpty() || !fallids.contains(fallid)) { - logInHL7MessageToDatabase(message, msh, metadata); + HL7Util.logInHL7MessageToDatabase(message, msh, metadata); updateUI(new HL7Message(patient, -1, LocalDateTime.now(), "Fall nicht gefunden.?", true)); return generateACKWithAR(message, "Fall nicht gefunden."); } @@ -121,9 +120,9 @@ public class HL7Receiver implements ReceivingApplicat List untersuchungen = new ArrayList<>(); // Station(PV1-3-1), Fachabteilung(PV1-3-4), Aufnahmedatum(PV1-44), Entlassungsdatum(PV1-45), Fallnummer(PV1-19) - Station station = new Station(); // TODO: Station holen! - station.setStation(pv1.getAssignedPatientLocation().getPointOfCare().encode()); - station.setAbteilung(pv1.getAssignedPatientLocation().getFacility().encode()); + String stat = pv1.getAssignedPatientLocation().getPointOfCare().encode(); + Station station = mainctrl.getStammdaten().getStationen().stream().filter(s -> s.getStation().equals(stat)).findFirst().orElse(null); + // TODO: Stationen mit falschen Abteilungen werden einfach umgeschrieben^^ StationsHistorie hist = new StationsHistorie(); // TODO: StationsHist schreiben/schon vorhanden! hist.setStationKey(station.getStation()); @@ -156,7 +155,7 @@ public class HL7Receiver implements ReceivingApplicat 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) { - logInHL7MessageToDatabase(message, msh, metadata); + HL7Util.logInHL7MessageToDatabase(message, msh, metadata); updateUI(new HL7Message(patient, -1, LocalDateTime.now(), "Mitarbeiter nicht gefunden.", true)); return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); } @@ -209,7 +208,7 @@ public class HL7Receiver implements ReceivingApplicat 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) { - logInHL7MessageToDatabase(message, msh, metadata); + HL7Util.logInHL7MessageToDatabase(message, msh, metadata); updateUI(new HL7Message(patient, -1, LocalDateTime.now(), "Mitarbeiter nicht gefunden.", true)); return generateACKWithAR(message, "Mitarbeiter nicht gefunden."); } @@ -243,7 +242,7 @@ public class HL7Receiver implements ReceivingApplicat } // HL7 Nachricht loggen. - logInHL7MessageToDatabase(message, msh, metadata); + HL7Util.logInHL7MessageToDatabase(message, msh, metadata); // TODO: Runnable...??? Jojo??? updatedFallIDs.forEach(id -> updateUI(new HL7Message(patient, id, LocalDateTime.now(), "Was soll hier wohl stehen?", false))); @@ -258,30 +257,6 @@ public class HL7Receiver implements ReceivingApplicat return generateACK(message); } - private void logHL7MessageToDatabase(Message message, MSH msh, Map metadata, HL7LogEntry.Direction direction) throws HL7Exception { - String sendind_ip = metadata.get("SENDING_IP").toString(); - String sendind_port = metadata.get("SENDING_PORT").toString(); - LocalDateTime ldt = HL7Util.parseLocalDateTime(msh.getDateTimeOfMessage().getTime()); - - HL7LogEntry entry = new HL7LogEntry(); - - entry.setMessage(message.encode()); - entry.setTimestamp(ldt); - entry.setSource(sendind_ip + ":" + sendind_port); - entry.setDirection(direction); - - try { - // DBHandler.setHL7Nachricht(message.encode(), ldt, sendind_ip + ":" + sendind_port); - DBHandler.setHL7LogEntry(entry); - } catch (SQLException e) { - e.printStackTrace(); - } - } - - private void logInHL7MessageToDatabase(Message message, MSH msh, Map metadata) throws HL7Exception { - logHL7MessageToDatabase(message, msh, metadata, HL7LogEntry.Direction.IN); - } - private void updateUI(HL7Message hl7message) { Platform.runLater(() -> mainctrl.getMessageController().addMessage(hl7message)); } diff --git a/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Util.java b/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Util.java index 84e4c3d..55f4f92 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Util.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Util.java @@ -1,10 +1,17 @@ package de.uniluebeck.mi.projmi6.hapi; +import ca.uhn.hl7v2.HL7Exception; import ca.uhn.hl7v2.model.DataTypeException; +import ca.uhn.hl7v2.model.Message; import ca.uhn.hl7v2.model.v251.datatype.DTM; +import ca.uhn.hl7v2.model.v251.segment.MSH; +import de.uniluebeck.mi.projmi6.db.DBHandler; +import de.uniluebeck.mi.projmi6.model.HL7LogEntry; +import java.sql.SQLException; import java.time.LocalDateTime; import java.time.ZoneId; +import java.util.Map; /** * Created by nils on 20.11.2015. @@ -30,4 +37,30 @@ public class HL7Util { private static String removeWhitespaces(String s) { return s.replaceAll("\\s", ""); } + + public static void logHL7MessageToDatabase(HL7LogEntry entry) { + try { + DBHandler.setHL7LogEntry(entry); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public static void logInHL7MessageToDatabase(Message message, MSH msh, Map metadata) throws HL7Exception { + logHL7MessageToDatabase(message, msh, metadata, HL7LogEntry.Direction.IN); + } + + private static void logHL7MessageToDatabase(Message message, MSH msh, Map metadata, HL7LogEntry.Direction direction) throws HL7Exception { + String sendind_ip = metadata.get("SENDING_IP").toString(); + String sendind_port = metadata.get("SENDING_PORT").toString(); + LocalDateTime ldt = parseLocalDateTime(msh.getDateTimeOfMessage().getTime()); + + HL7LogEntry entry = new HL7LogEntry(); + entry.setMessage(message.encode()); + entry.setTimestamp(ldt); + entry.setSource(sendind_ip + ":" + sendind_port); + entry.setDirection(direction); + + logHL7MessageToDatabase(entry); + } }