|
|
|
@@ -57,8 +57,7 @@ public class HL7Receiver<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> implements ReceivingApplicat |
|
|
|
List<Untersuchung> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> 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<T extends AbstractMessage> implements ReceivingApplicat |
|
|
|
return generateACK(message); |
|
|
|
} |
|
|
|
|
|
|
|
private void logHL7MessageToDatabase(Message message, MSH msh, Map<String, Object> 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<String, Object> metadata) throws HL7Exception { |
|
|
|
logHL7MessageToDatabase(message, msh, metadata, HL7LogEntry.Direction.IN); |
|
|
|
} |
|
|
|
|
|
|
|
private void updateUI(HL7Message hl7message) { |
|
|
|
Platform.runLater(() -> mainctrl.getMessageController().addMessage(hl7message)); |
|
|
|
} |
|
|
|
|