| @@ -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<Patient> 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<Icd10Code> 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<Untersuchung> 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<Diagnose> getDiagnosenByFall(Fall fall) throws SQLException { | |||
| PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID); | |||
| statement.setInt(1, fall.getFallID()); | |||