Browse Source

Merge remote-tracking branch 'origin/master'

master
taschi 10 years ago
parent
commit
fa8fd6560f
2 changed files with 42 additions and 34 deletions
  1. +9
    -34
      src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java
  2. +33
    -0
      src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Util.java

+ 9
- 34
src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java View File

@@ -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));
}


+ 33
- 0
src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Util.java View File

@@ -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<String, Object> metadata) throws HL7Exception {
logHL7MessageToDatabase(message, msh, metadata, HL7LogEntry.Direction.IN);
}

private static 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 = 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);
}
}

Loading…
Cancel
Save