Im Rahmen der Veranstaltung "CS3330 - Projektpraktikum MedizinischeInformatik" an der Universität zu Lübeck entstandenes Krankenhausinformationssystem (KIS).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 line
1.8 KiB

  1. package de.uniluebeck.mi.projmi6.hapi;
  2. import ca.uhn.hl7v2.HL7Exception;
  3. import ca.uhn.hl7v2.model.DataTypeException;
  4. import ca.uhn.hl7v2.model.Message;
  5. import ca.uhn.hl7v2.model.v251.datatype.DTM;
  6. import ca.uhn.hl7v2.model.v251.segment.MSH;
  7. import de.uniluebeck.mi.projmi6.db.DBHandler;
  8. import de.uniluebeck.mi.projmi6.model.HL7LogEntry;
  9. import java.sql.SQLException;
  10. import java.time.LocalDateTime;
  11. import java.time.ZoneId;
  12. import java.util.Map;
  13. /**
  14. * Created by nils on 20.11.2015.
  15. */
  16. public class HL7Utils {
  17. public static LocalDateTime parseLocalDateTime(DTM dtm) {
  18. try {
  19. return LocalDateTime.ofInstant(dtm.getValueAsDate().toInstant(), ZoneId.systemDefault());
  20. } catch (DataTypeException e) {
  21. e.printStackTrace();
  22. }
  23. return null;
  24. }
  25. public static void logHL7MessageToDatabase(HL7LogEntry entry) {
  26. try {
  27. DBHandler.setHL7LogEntry(entry);
  28. } catch (SQLException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. public static void logInHL7MessageToDatabase(Message message, MSH msh, Map<String, Object> metadata) throws HL7Exception {
  33. logHL7MessageToDatabase(message, msh, metadata, HL7LogEntry.Direction.IN);
  34. }
  35. private static void logHL7MessageToDatabase(Message message, MSH msh, Map<String, Object> metadata, HL7LogEntry.Direction direction) throws HL7Exception {
  36. String sendind_ip = metadata.get("SENDING_IP").toString();
  37. String sendind_port = metadata.get("SENDING_PORT").toString();
  38. LocalDateTime ldt = parseLocalDateTime(msh.getDateTimeOfMessage().getTime());
  39. HL7LogEntry entry = new HL7LogEntry();
  40. entry.setMessage(message.encode());
  41. entry.setTimestamp(ldt);
  42. entry.setSource(sendind_ip + ":" + sendind_port);
  43. entry.setDirection(direction);
  44. logHL7MessageToDatabase(entry);
  45. }
  46. }