diff --git a/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java b/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java index 114b4de..2dee5cf 100644 --- a/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java +++ b/src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java @@ -7,7 +7,7 @@ import java.util.ArrayList; import java.util.List; /** - * Created by nils on 15.11.2015. + * Handler fuer alle DB Interaktionen. */ public class DBHandler { @@ -15,36 +15,37 @@ public class DBHandler { private static final String SELECT_PATIENT_BY_ID = "SELECT * FROM `patient` WHERE `id` = ?"; private static final String UPDATE_PATIENT = "UPDATE `patient`" + "SET `CAVE`=?," + - "`Familienstand`=?," + - "`Geburtsdatum`=?," + + "`Vorname`=?," + "`Geburtsname`=?," + - "`Geschlecht`=?," + // TODO: Hausnummer fehlt - "`KassenID`=?," + - "`LetzterBearbeiter`=?," + "`Nachname`=?," + - "`Ort`=?," + - "`PLZ`=?," + + "`Geburtsdatum`=?," + + "`Geschlecht`=?," + + "`Familienstand`=?," + "`Strasse`=?," + + "`Hausnummer`=?," + + "`PLZ`=?," + + "`Ort`=?," + "`Telefon`=?," + + "`KassenID`=?," + "`Versichertennummer`=?," + - "`Vorname`=?" + + "`LetzterBearbeiter`=? " + "WHERE `ID`=?"; private static final String INSERT_PATIENT = "INSERT INTO `patient`" + "(`CAVE`," + - "`Familienstand`," + - "`Geburtsdatum`," + + "`Vorname`," + "`Geburtsname`," + + "`Nachname`," + + "`Geburtsdatum`," + "`Geschlecht`," + + "`Familienstand`," + + "`Strasse`," + "`Hausnummer`," + - "`KassenID`," + - "`LetzterBearbeiter`," + - "`Nachname`," + - "`Ort`," + "`PLZ`," + - "`Strasse`," + + "`Ort`," + "`Telefon`," + + "`KassenID`," + "`Versichertennummer`," + - "`Vorname`," + + "`LetzterBearbeiter`," + "`Ersteller`)" + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; private static final String SELECT_ALL_STATIONEN = "SELECT * FROM `stammstation`"; @@ -75,7 +76,7 @@ public class DBHandler { "`Versichertennummer`=?," + "KassenID=?," + "`storniert`=?," + - "LetzterBearbeiter=?," + + "LetzterBearbeiter=? " + "WHERE `FallID`=?"; private static final String SELECT_DIAGNOSE_BY_ID = "SELECT * FROM `diagnose` WHERE `diagid` = ?"; private static final String SELECT_ALL_ICD10CODES = "SELECT * FROM `stammicd10`"; @@ -101,12 +102,18 @@ public class DBHandler { "`OPSVersion`=?," + "`storniert`=?," + "`Untersuchundatum`=?" + - "`LetzterBearbeiter`" + + "`LetzterBearbeiter` " + "WHERE `UnterID`=?"; private static final String SELECT_MITARBEITER_BY_ID = "SELECT * FROM `mitarbeiter` WHERE `mitarbid` = ?"; private static final String SELECT_DIAGNOSE_BY_FALLID = "SELECT * FROM `diagnose` WHERE `fallid` = ?"; private static final String SELECT_ALL_KASSEN = "SELECT * FROM `kasse`"; + /** + * Gibt alle {@link Patient} aus der DB zurueck. + * + * @return Liste aller {@link Patient}. + * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. + */ public static List getAllPatients() throws SQLException { Statement statement = MySqlConnFactory.getConnection().createStatement(); ResultSet rs = statement.executeQuery(SELECT_ALL_PATIENTS); @@ -119,23 +126,22 @@ public class DBHandler { return patients; } - public static Patient getPatient(int id) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_PATIENT_BY_ID); - ResultSet rs; - statement.setInt(1, id); - rs = statement.executeQuery(); - - return getPatient(rs); - } - + /** + * Extrahiert ein Objekt {@link Patient} aus einem gegebenen {@link ResultSet}. + * + * @param rs ResultSet from Database Query. + * @return {@link Patient} + * @throws SQLException + */ private static Patient getPatient(ResultSet rs) throws SQLException { Patient patient = new Patient(); patient.setPatID(rs.getInt("id")); patient.setGeburtsname(rs.getString("geburtsname")); patient.setVorname(rs.getString("vorname")); patient.setNachname(rs.getString("nachname")); - if (rs.getDate("geburtsdatum") != null) + if (rs.getDate("geburtsdatum") != null) { patient.setGeburtsdatum(rs.getDate("geburtsdatum").toLocalDate()); + } patient.setStrasse(rs.getString("strasse")); patient.setHausnummer(rs.getString("hausnummer")); patient.setPlz(rs.getString("plz")); @@ -148,64 +154,62 @@ public class DBHandler { return patient; } - // TODO: Defaultwerte entfernen und so. - public static void updatePatient(Patient patient, int mitarbid) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_PATIENT); - statement.setString(1, patient.getCave()); // CAVE - if (patient.getFamilienstand() != null) - statement.setString(2, patient.getFamilienstand().toString()); // Familienstand - else - statement.setString(2, "l"); - statement.setDate(3, Date.valueOf(patient.getGeburtsdatum())); // Geburtsdatum - statement.setString(4, patient.getGeburtsname()); // Geburtsname - if (patient.getGeschlecht() != null) - statement.setString(5, String.valueOf(patient.getGeschlecht().id())); // Geschlecht - else - statement.setString(5, "o"); - // statement.setInt(6, patient.getKassenID()); // KasseId - statement.setInt(6, 1); // KasseId - statement.setInt(7, mitarbid); // Letzterbearbeiter - statement.setString(8, patient.getNachname()); // Nachname - statement.setString(9, patient.getOrt()); // Ort - statement.setString(10, patient.getPlz()); // PLZ - statement.setString(11, patient.getStrasse()); // Strasse - statement.setString(12, patient.getTelefon()); // telefon - statement.setString(13, patient.getVersichertennummer()); // versichertennummer - statement.setString(14, patient.getVorname()); // vorname - statement.setInt(15, patient.getPatID()); // patid - - System.out.println(statement.toString()); + // TODO: Never used. + public static Patient getPatient(int id) throws SQLException { + PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_PATIENT_BY_ID); + ResultSet rs; + statement.setInt(1, id); + rs = statement.executeQuery(); - statement.executeUpdate(); + return getPatient(rs); } - public static void insertPatient(Patient patient, int mitarbid) throws SQLException { - PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_PATIENT); - statement.setString(1, patient.getCave()); // `CAVE` - if (patient.getFamilienstand() != null) - statement.setString(2, String.valueOf(patient.getFamilienstand().id())); // `Familienstand` - else - statement.setString(2, "l"); - statement.setDate(3, Date.valueOf(patient.getGeburtsdatum())); // `Geburtdatum` - statement.setString(4, patient.getGeburtsname()); // `Geburtsname` - if (patient.getGeschlecht() != null) - statement.setString(5, String.valueOf(patient.getGeschlecht().id())); // `Geschlecht` - else - statement.setString(5, "o"); - statement.setString(6, patient.getHausnummer()); // `Hausnummer` - //statement.setInt(7, patient.getKassenID()); // `KassenID` - statement.setInt(7, 1); // `KassenID` - statement.setInt(8, mitarbid); // `LetzterBearbeiter` - statement.setString(9, patient.getNachname()); // `Nachname` - statement.setString(10, patient.getOrt()); // `Ort` - statement.setString(11, patient.getPlz()); // `PLZ` - statement.setString(12, patient.getStrasse()); // `Strasse` - statement.setString(13, patient.getTelefon()); // `Telefon` - statement.setString(14, patient.getVersichertennummer()); // `Versichertennummer` - statement.setString(15, patient.getVorname()); // `Vorname` - statement.setInt(16, mitarbid); // `Ersteller` - - System.out.println(statement.toString()); + /** + * Fuehrt {@code INSERT} bei einem neuen Datensatz und {@code UPDATE} bei einem existierenden Datensatz aus. + * + * @param patient zu verarbeitender Datensatz. + * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. + * @param isUpdate {@code true} wenn der Datensatz bereits existiert, sonst {@code false}. + * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. + */ + public static void setPatient(Patient patient, int mitarbid, boolean isUpdate) throws SQLException { + PreparedStatement statement; + if (isUpdate) { + statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_PATIENT); + } else { + statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_PATIENT); + } + + statement.setString(1, patient.getCave()); // CAVE + statement.setString(2, patient.getVorname()); // Vorname + statement.setString(3, patient.getGeburtsname()); // Geburtsname + statement.setString(4, patient.getNachname()); // Nachname + + statement.setDate(5, Date.valueOf(patient.getGeburtsdatum())); // Geburtsdatum + if (patient.getGeschlecht() != null) { + statement.setString(6, String.valueOf(patient.getGeschlecht().id())); // Geschlecht + } else { + statement.setString(6, String.valueOf(Patient.Geschlecht.OTHER.id())); + } + if (patient.getFamilienstand() != null) { + statement.setString(7, String.valueOf(patient.getFamilienstand().id()));// Familienstand + } else { + statement.setString(7, String.valueOf(Patient.Familienstand.LEDIG.id())); + } + statement.setString(8, patient.getStrasse()); // Strasse + statement.setString(9, patient.getHausnummer()); // Hausnummer + statement.setString(10, patient.getPlz()); // PLZ + statement.setString(11, patient.getOrt()); // Ort + statement.setString(12, patient.getTelefon()); // Telefon + statement.setInt(13, patient.getKassenID()); // KassenID + statement.setString(14, patient.getVersichertennummer()); // Versichertennummer + statement.setInt(15, mitarbid); // LetzterBearbeiter + if (!isUpdate) { + statement.setInt(16, mitarbid); // Ersteller + } else { + statement.setInt(16, patient.getPatID()); // PatID (WHERE) + } + statement.execute(); } @@ -249,12 +253,15 @@ public class DBHandler { Fall fall = new Fall(); fall.setFallID(rs.getInt("fallid")); - if (rs.getTimestamp("aufnahmedatum") != null) + if (rs.getTimestamp("aufnahmedatum") != null) { fall.setAufnahmeDatum(rs.getTimestamp("aufnahmedatum").toLocalDateTime()); - if (rs.getTimestamp("entlassungsdatum") != null) + } + if (rs.getTimestamp("entlassungsdatum") != null) { fall.setEntlassungsDatum(rs.getTimestamp("entlassungsdatum").toLocalDateTime()); - if (rs.getInt("hauptdiagnose") != 0) + } + if (rs.getInt("hauptdiagnose") != 0) { fall.setHauptDiagnose(getDiagnose(rs.getInt("hauptdiagnose"), fall)); + } return fall; } @@ -339,11 +346,13 @@ public class DBHandler { private static void setVersionInformation(Version version, ResultSet rs) throws SQLException { version.setErsteller(rs.getInt("ersteller")); - if (rs.getTimestamp("erstelldatum") != null) + if (rs.getTimestamp("erstelldatum") != null) { version.setErstellDatumZeit(rs.getTimestamp("erstelldatum").toLocalDateTime()); + } version.setBearbeiter(rs.getInt("letzterbearbeiter")); - if (rs.getTimestamp("letztesbearbeitungsdatum") != null) + if (rs.getTimestamp("letztesbearbeitungsdatum") != null) { version.setBearbeitetDatumZeit(rs.getTimestamp("letztesbearbeitungsdatum").toLocalDateTime()); + } } public static List getAllIcd10Codes() throws SQLException { @@ -389,7 +398,7 @@ public class DBHandler { return opscodes; } - public static OpsCode getOpsCode(String code, int version) throws SQLException { + private static OpsCode getOpsCode(String code, int version) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_OPSCODE_BY_ID); ResultSet rs; statement.setString(1, code); @@ -439,6 +448,13 @@ public class DBHandler { return mitarbeiter; } + /** + * Gibt gibt alle {@link Untersuchung} zu einem {@link Fall} aus. + * + * @param fall Parent {@link Fall} + * @return Liste aller {@link Untersuchung} zu einem {@link Fall}. + * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. + */ public static List getUntersuchungByFall(Fall fall) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_UNTERS_BY_FALLID); statement.setInt(1, fall.getFallID()); @@ -452,6 +468,26 @@ public class DBHandler { return untersuchungen; } + private static Untersuchung getUntersuchung(ResultSet rs, Fall fall) throws SQLException { + Untersuchung untersuchung = new Untersuchung(); + untersuchung.setUntersID(rs.getInt("untersid")); + untersuchung.setFall(fall); + untersuchung.setDurchfuehrenderArzt(getMitarbeiter(rs.getInt("durchfuehrenderarzt"))); + untersuchung.setUntersuchungsdatum(rs.getTimestamp("untersuchungsdatum").toLocalDateTime()); + untersuchung.setOpscode(getOpsCode(rs.getString("opscode"), rs.getInt("opsversion"))); + setVersionInformation(untersuchung, rs); + return untersuchung; + } + + + /** + * Fuehrt {@code INSERT} bei einem neuen Datensatz und {@code UPDATE} bei einem existierenden Datensatz aus. + * + * @param untersuchung zu verarbeitender Datensatz. + * @param mitarbid {@link Mitarbeiter#mitarbID} des aktuellen Benutzers/Mitarbeiters. + * @param isUpdate {@code true} wenn der Datensatz bereits existiert, sonst {@code false}. + * @throws SQLException wenn Fehler bei der SQL Verarbeitung auftreten. + */ public static void setUntersuchung(Untersuchung untersuchung, int mitarbid, boolean isUpdate) throws SQLException { PreparedStatement statement; if (isUpdate) { @@ -467,23 +503,13 @@ public class DBHandler { statement.setBoolean(5, untersuchung.getStorniert()); // storniert statement.setTimestamp(6, Timestamp.valueOf(untersuchung.getUntersuchungsdatum())); // Untersuchungsdatum statement.setInt(7, mitarbid); // Letzter Bearbeiter - if (!isUpdate) + if (!isUpdate) { statement.setInt(8, mitarbid); // Ersteller + } statement.execute(); } - private static Untersuchung getUntersuchung(ResultSet rs, Fall fall) throws SQLException { - Untersuchung untersuchung = new Untersuchung(); - untersuchung.setUntersID(rs.getInt("untersid")); - untersuchung.setFall(fall); - untersuchung.setDurchfuehrenderArzt(getMitarbeiter(rs.getInt("durchfuehrenderarzt"))); - untersuchung.setUntersuchungsdatum(rs.getTimestamp("untersuchungsdatum").toLocalDateTime()); - untersuchung.setOpscode(getOpsCode(rs.getString("opscode"), rs.getInt("opsversion"))); - setVersionInformation(untersuchung, rs); - return untersuchung; - } - public static List getDiagnosenByFall(Fall fall) throws SQLException { PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID); statement.setInt(1, fall.getFallID());