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 9b4cf9d..5280b09 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/hapi/HL7Receiver.java @@ -25,7 +25,8 @@ import java.util.List; import java.util.Map; /** - * Created by nils on 20.11.2015. + * Manages all HL7 receiving tasks + * @param */ public class HL7Receiver implements ReceivingApplication { private final Class type; @@ -60,6 +61,12 @@ public class HL7Receiver implements ReceivingApplicat return type.isInstance(message); } + /** + * generates an ACK of received message, throws Exception otherwise + * @param message to generate ACK + * @return ACK of message + * @throws HL7Exception + */ private Message generateACK(Message message) throws HL7Exception { try { return message.generateACK(); @@ -68,6 +75,13 @@ public class HL7Receiver implements ReceivingApplicat } } + /** + * generates an ACK with error code and log + * @param message to generate ACK + * @param s error string + * @return ACK with error code + * @throws HL7Exception + */ private Message generateACKWithAR(Message message, String s) throws HL7Exception { try { Message returnMessage = message.generateACK(AcknowledgmentCode.AR, new HL7Exception(s, ErrorCode.UNKNOWN_KEY_IDENTIFIER)); @@ -83,27 +97,35 @@ public class HL7Receiver implements ReceivingApplicat } } + /** + * encodes incoming message and save changes in database + * @param message received + * @param metadata //TODO + * @return ACK of message + * @throws HL7Exception + */ private Message processBAR_P05(Message message, Map metadata) throws HL7Exception { BAR_P05 bar_p05 = (BAR_P05) message; MSH msh = bar_p05.getMSH(); PID pid = bar_p05.getPID(); - + //get patient of the message int patid = Integer.parseInt(pid.getPatientID().encode()); Patient patient = mainctrl.getStammdaten().getPatienten().stream().filter(p -> p.getPatID() == patid).findFirst().orElse(null); + //error by unknown patient if (patient == null) { HL7Utils.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! + } List visits = bar_p05.getVISITAll(); List updatedFallIDs = new ArrayList<>(); - // Ab hier wird es dirty. for (BAR_P05_VISIT visit : visits) { + //get current fall PV1 pv1 = visit.getPV1(); int fallid = Integer.parseInt(pv1.getVisitNumber().getIDNumber().encode()); @@ -113,6 +135,7 @@ public class HL7Receiver implements ReceivingApplicat } catch (SQLException e) { e.printStackTrace(); } + //log error by unknown fall if (fallids.isEmpty() || !fallids.contains(fallid)) { HL7Utils.logInHL7MessageToDatabase(message, msh, metadata); updateUI(new HL7Message(patient, -1, LocalDateTime.now(), "Fall nicht gefunden.?", true)); @@ -129,8 +152,9 @@ public class HL7Receiver implements ReceivingApplicat // Station(PV1-3-1), Fachabteilung(PV1-3-4), Aufnahmedatum(PV1-44), Entlassungsdatum(PV1-45), Fallnummer(PV1-19) 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^^ + //TODO ATTENTION wrong abteilungen may write down here + //error message when station not exists if (station == null) { HL7Utils.logInHL7MessageToDatabase(message, msh, metadata); updateUI(new HL7Message(patient, -1, LocalDateTime.now(), "Station nicht gefunden.", true)); @@ -149,9 +173,11 @@ public class HL7Receiver implements ReceivingApplicat } hist.setFallID(fallid); + //diagnosis List dg1s = visit.getDG1All(); for (DG1 dg1 : dg1s) { Diagnose diagnose = new Diagnose(); + //default value by OPS ersteller and bearbeiter diagnose.setErsteller(99999); diagnose.setBearbeiter(99999); diagnose.setFall(fall);