diff --git a/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java b/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java index b4faf7c678c40b3daa3f6429d2314ce8d11e87ce..4b8001727ff44fdd7e46e3a9fa5f35695d0e02e7 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java +++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java @@ -12,6 +12,8 @@ public class AppointmentEntry { private Subject subject; private Set<AppointmentType> types = new HashSet<>(); private String source; + private String location; + /** * @return the time @@ -144,4 +146,20 @@ public class AppointmentEntry { } } + + /** + * @return the location + * @see #location + */ + public String getLocation() { + return location; + } + + /** + * @param location the location to set + * @see #location + */ + public void setLocation(String location) { + this.location = location; + } } diff --git a/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java index 6966c9ec3dcea9a0d39f302eb625c6aeb923005a..4c669334a76b25c7a1ebe5959bbb4e771df61346 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java +++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java @@ -1,33 +1,53 @@ package smash.appointment.parse; +import java.util.Calendar; + public class AppointmentSqlExporter extends SqlExporter { - public String toSql(AppointmentEntry appointment, boolean isFinished) { + public String toSql(AppointmentEntry appointment) { StringBuilder result = new StringBuilder(""); result.append("insert into web_appointment ("); result.append("datetime_when, "); result.append("length, "); - result.append("is_finished, "); + result.append("status, "); result.append("comment, "); + result.append("location_id, "); result.append("visit_id) "); result.append("values ("); - result.append(getStringVal(appointment.getDay() + " " + appointment.getTime()+"+00") + ","); + result.append(getStringVal(appointment.getDay() + " " + appointment.getTime() + "+00") + ","); result.append(getStringVal(appointment.getDuration()) + ","); - result.append(isFinished + ","); + if (isBefore(appointment, Calendar.getInstance())) { + result.append("'FINISHED',"); + } else { + result.append("'SCHEDULED',"); + } result.append(getStringVal(appointment.getSource()) + ","); + switch (appointment.getLocation().substring(0, 1)) { + case ("L"): + result.append("(select id from web_location where name = 'LIH'),"); + break; + case ("F"): + result.append("(select id from web_location where name = 'Flying Team'),"); + break; + case ("P"): + result.append("(select id from web_location where name = 'PRC'),"); + break; + default: + throw new RuntimeException("Unknown location: " + appointment.getLocation()); + } result.append("(select max(id) from web_visit)"); - result.append(");"); + result.append(");\n"); for (AppointmentType type : appointment.getTypes()) { - result.append("insert into web_appointment_appointment_types ("); + result.append("\tinsert into web_appointment_appointment_types ("); result.append("appointment_id, "); result.append("appointmenttype_id) "); result.append("values ("); result.append("(select max(id) from web_appointment),"); result.append("(select id from web_appointmenttype where code=" + getStringVal(type.getAbbreviation()) + ") "); - result.append(");"); + result.append(");\n"); } return result.toString(); diff --git a/appointment-import/src/main/java/smash/appointment/parse/CellParser.java b/appointment-import/src/main/java/smash/appointment/parse/CellParser.java index a3fcd104e1f615b5ba89d45fd7c25137c73eb4cf..bfd6940fcf13b38ed6c8e2279e953bc515f70192 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/CellParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/CellParser.java @@ -42,6 +42,11 @@ public class CellParser { Subject subject = extractSubject(query); result.setSubject(subject); + if (subject!=null) { + result.setLocation(subject.getToBeSeenAt()); + } else { + result.setLocation("PRC"); + } AppointmentTypeCollection type = extractType(query); if (type == null) { diff --git a/appointment-import/src/main/java/smash/appointment/parse/RedcapCalendarParser.java b/appointment-import/src/main/java/smash/appointment/parse/RedcapCalendarParser.java index ac392d9800290839ec7ae24ff45fe1be8817e696..41a5d791d53a07ad39a1fc3c35db84bb9d3ebd1d 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/RedcapCalendarParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/RedcapCalendarParser.java @@ -84,6 +84,7 @@ public class RedcapCalendarParser { if (subject != null && !subject.getToBeSeenAt().equalsIgnoreCase("LIH")) { return null; } + result.setLocation("LIH"); result.setDay(day); result.setTime(time); result.setSource("From redcap: " + query); diff --git a/appointment-import/src/main/java/smash/appointment/parse/RedcapParser.java b/appointment-import/src/main/java/smash/appointment/parse/RedcapParser.java index 8ba9e39616c177ea8487d95bd2a959f3964e09de..2f4615a2f9bf9e82ebd980a1a31301119dd70e17 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/RedcapParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/RedcapParser.java @@ -92,6 +92,7 @@ public class RedcapParser { entry.setSubject(subject); entry.setSource("Imported from RedCap"); entry.addType(AppointmentType.LEVEL_B_M_POWER); + entry.setLocation(subject.getToBeSeenAt()); return entry; } @@ -102,6 +103,7 @@ public class RedcapParser { entry.setSubject(subject); entry.setSource("Imported from RedCap"); entry.addType(AppointmentType.LEVEL_SB); + entry.setLocation(subject.getToBeSeenAt()); return entry; } @@ -116,6 +118,7 @@ public class RedcapParser { entry.setSubject(subject); entry.setSource("Imported from RedCap"); entry.addType(AppointmentType.LEVEL_BV); + entry.setLocation(subject.getToBeSeenAt()); return entry; } @@ -130,6 +133,7 @@ public class RedcapParser { entry.setSubject(subject); entry.setSource("Imported from RedCap"); entry.addType(AppointmentType.LEVEL_BG); + entry.setLocation(subject.getToBeSeenAt()); return entry; } @@ -144,6 +148,7 @@ public class RedcapParser { entry.setSubject(subject); entry.setSource("Imported from RedCap"); entry.addType(AppointmentType.LEVEL_B); + entry.setLocation(subject.getToBeSeenAt()); return entry; } @@ -162,6 +167,7 @@ public class RedcapParser { entry.setSource("Imported from RedCap"); entry.setTime(time); entry.addType(AppointmentType.LEVEL_A); + entry.setLocation(subject.getToBeSeenAt()); return entry; } diff --git a/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java index e3056da5f1bb3d9f72a537e606544f557508480b..0e3389198112f172885be125dc195b11e2767dac 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java +++ b/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java @@ -25,7 +25,7 @@ public class SubjectSqlExporter extends SqlExporter { result.append("nd_number,"); result.append("mpower_id,"); result.append("screening_number,"); - result.append("default_appointment_location,"); + result.append("default_location_id,"); result.append("type,"); result.append("dead,"); result.append("resigned,"); @@ -51,7 +51,20 @@ public class SubjectSqlExporter extends SqlExporter { result.append(getStringVal(subject.getNdNumber()) + ","); result.append(getStringVal(subject.getmPowerId()) + ","); result.append(getStringVal(subject.getScreeningNumber()) + ","); - result.append(getStringVal(subject.getToBeSeenAt()) + ","); + switch (subject.getToBeSeenAt()) { + case ("L"): + result.append("(select id from web_location where name = 'LIH'),"); + break; + case ("F"): + result.append("(select id from web_location where name = 'Flying Team'),"); + break; + case ("P"): + result.append("(select id from web_location where name = 'PRC'),"); + break; + default: + throw new RuntimeException("Unknown location: " + subject.getToBeSeenAt()); + } + result.append(getStringVal(subject.getType().toString().substring(0, 1)) + ","); result.append(subject.isDead() + ","); result.append(subject.isResigned() + ","); diff --git a/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java index 16077d37622b97edd5c407abebc6e4344112a3b9..730b6c09cfc0d9e9d432ab5ed42f0322db30a5f6 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java +++ b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java @@ -24,7 +24,7 @@ public class VisitSqlExporter extends SqlExporter { boolean entryFinished= isFinished; if (isBefore(entry, Calendar.getInstance())) entryFinished=true; - result.append(appointmentSqlExporter.toSql(entry, entryFinished)+"\n"); + result.append(appointmentSqlExporter.toSql(entry)+"\n"); } return result.toString();