Selaa lähdekoodia

SQL Statements korrigiert, insert/update Patient refactort.

testBranch
vanhempi
commit
6875d878a2
1 muutettua tiedostoa jossa 128 lisäystä ja 102 poistoa
  1. +128
    -102
      src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java

+ 128
- 102
src/main/java/de/uniluebeck/mi/projmi6/db/DBHandler.java Näytä tiedosto

@@ -7,7 +7,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;


/** /**
* Created by nils on 15.11.2015.
* Handler fuer alle DB Interaktionen.
*/ */
public class DBHandler { 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 SELECT_PATIENT_BY_ID = "SELECT * FROM `patient` WHERE `id` = ?";
private static final String UPDATE_PATIENT = "UPDATE `patient`" + private static final String UPDATE_PATIENT = "UPDATE `patient`" +
"SET `CAVE`=?," + "SET `CAVE`=?," +
"`Familienstand`=?," +
"`Geburtsdatum`=?," +
"`Vorname`=?," +
"`Geburtsname`=?," + "`Geburtsname`=?," +
"`Geschlecht`=?," + // TODO: Hausnummer fehlt
"`KassenID`=?," +
"`LetzterBearbeiter`=?," +
"`Nachname`=?," + "`Nachname`=?," +
"`Ort`=?," +
"`PLZ`=?," +
"`Geburtsdatum`=?," +
"`Geschlecht`=?," +
"`Familienstand`=?," +
"`Strasse`=?," + "`Strasse`=?," +
"`Hausnummer`=?," +
"`PLZ`=?," +
"`Ort`=?," +
"`Telefon`=?," + "`Telefon`=?," +
"`KassenID`=?," +
"`Versichertennummer`=?," + "`Versichertennummer`=?," +
"`Vorname`=?" +
"`LetzterBearbeiter`=? " +
"WHERE `ID`=?"; "WHERE `ID`=?";
private static final String INSERT_PATIENT = "INSERT INTO `patient`" + private static final String INSERT_PATIENT = "INSERT INTO `patient`" +
"(`CAVE`," + "(`CAVE`," +
"`Familienstand`," +
"`Geburtsdatum`," +
"`Vorname`," +
"`Geburtsname`," + "`Geburtsname`," +
"`Nachname`," +
"`Geburtsdatum`," +
"`Geschlecht`," + "`Geschlecht`," +
"`Familienstand`," +
"`Strasse`," +
"`Hausnummer`," + "`Hausnummer`," +
"`KassenID`," +
"`LetzterBearbeiter`," +
"`Nachname`," +
"`Ort`," +
"`PLZ`," + "`PLZ`," +
"`Strasse`," +
"`Ort`," +
"`Telefon`," + "`Telefon`," +
"`KassenID`," +
"`Versichertennummer`," + "`Versichertennummer`," +
"`Vorname`," +
"`LetzterBearbeiter`," +
"`Ersteller`)" + "`Ersteller`)" +
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
private static final String SELECT_ALL_STATIONEN = "SELECT * FROM `stammstation`"; private static final String SELECT_ALL_STATIONEN = "SELECT * FROM `stammstation`";
@@ -75,7 +76,7 @@ public class DBHandler {
"`Versichertennummer`=?," + "`Versichertennummer`=?," +
"KassenID=?," + "KassenID=?," +
"`storniert`=?," + "`storniert`=?," +
"LetzterBearbeiter=?," +
"LetzterBearbeiter=? " +
"WHERE `FallID`=?"; "WHERE `FallID`=?";
private static final String SELECT_DIAGNOSE_BY_ID = "SELECT * FROM `diagnose` WHERE `diagid` = ?"; private static final String SELECT_DIAGNOSE_BY_ID = "SELECT * FROM `diagnose` WHERE `diagid` = ?";
private static final String SELECT_ALL_ICD10CODES = "SELECT * FROM `stammicd10`"; private static final String SELECT_ALL_ICD10CODES = "SELECT * FROM `stammicd10`";
@@ -101,12 +102,18 @@ public class DBHandler {
"`OPSVersion`=?," + "`OPSVersion`=?," +
"`storniert`=?," + "`storniert`=?," +
"`Untersuchundatum`=?" + "`Untersuchundatum`=?" +
"`LetzterBearbeiter`" +
"`LetzterBearbeiter` " +
"WHERE `UnterID`=?"; "WHERE `UnterID`=?";
private static final String SELECT_MITARBEITER_BY_ID = "SELECT * FROM `mitarbeiter` WHERE `mitarbid` = ?"; 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_DIAGNOSE_BY_FALLID = "SELECT * FROM `diagnose` WHERE `fallid` = ?";
private static final String SELECT_ALL_KASSEN = "SELECT * FROM `kasse`"; 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 { public static List<Patient> getAllPatients() throws SQLException {
Statement statement = MySqlConnFactory.getConnection().createStatement(); Statement statement = MySqlConnFactory.getConnection().createStatement();
ResultSet rs = statement.executeQuery(SELECT_ALL_PATIENTS); ResultSet rs = statement.executeQuery(SELECT_ALL_PATIENTS);
@@ -119,23 +126,22 @@ public class DBHandler {
return patients; 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 { private static Patient getPatient(ResultSet rs) throws SQLException {
Patient patient = new Patient(); Patient patient = new Patient();
patient.setPatID(rs.getInt("id")); patient.setPatID(rs.getInt("id"));
patient.setGeburtsname(rs.getString("geburtsname")); patient.setGeburtsname(rs.getString("geburtsname"));
patient.setVorname(rs.getString("vorname")); patient.setVorname(rs.getString("vorname"));
patient.setNachname(rs.getString("nachname")); patient.setNachname(rs.getString("nachname"));
if (rs.getDate("geburtsdatum") != null)
if (rs.getDate("geburtsdatum") != null) {
patient.setGeburtsdatum(rs.getDate("geburtsdatum").toLocalDate()); patient.setGeburtsdatum(rs.getDate("geburtsdatum").toLocalDate());
}
patient.setStrasse(rs.getString("strasse")); patient.setStrasse(rs.getString("strasse"));
patient.setHausnummer(rs.getString("hausnummer")); patient.setHausnummer(rs.getString("hausnummer"));
patient.setPlz(rs.getString("plz")); patient.setPlz(rs.getString("plz"));
@@ -148,64 +154,62 @@ public class DBHandler {
return patient; 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(); statement.execute();
} }
@@ -249,12 +253,15 @@ public class DBHandler {
Fall fall = new Fall(); Fall fall = new Fall();


fall.setFallID(rs.getInt("fallid")); fall.setFallID(rs.getInt("fallid"));
if (rs.getTimestamp("aufnahmedatum") != null)
if (rs.getTimestamp("aufnahmedatum") != null) {
fall.setAufnahmeDatum(rs.getTimestamp("aufnahmedatum").toLocalDateTime()); fall.setAufnahmeDatum(rs.getTimestamp("aufnahmedatum").toLocalDateTime());
if (rs.getTimestamp("entlassungsdatum") != null)
}
if (rs.getTimestamp("entlassungsdatum") != null) {
fall.setEntlassungsDatum(rs.getTimestamp("entlassungsdatum").toLocalDateTime()); fall.setEntlassungsDatum(rs.getTimestamp("entlassungsdatum").toLocalDateTime());
if (rs.getInt("hauptdiagnose") != 0)
}
if (rs.getInt("hauptdiagnose") != 0) {
fall.setHauptDiagnose(getDiagnose(rs.getInt("hauptdiagnose"), fall)); fall.setHauptDiagnose(getDiagnose(rs.getInt("hauptdiagnose"), fall));
}


return fall; return fall;
} }
@@ -339,11 +346,13 @@ public class DBHandler {


private static void setVersionInformation(Version version, ResultSet rs) throws SQLException { private static void setVersionInformation(Version version, ResultSet rs) throws SQLException {
version.setErsteller(rs.getInt("ersteller")); version.setErsteller(rs.getInt("ersteller"));
if (rs.getTimestamp("erstelldatum") != null)
if (rs.getTimestamp("erstelldatum") != null) {
version.setErstellDatumZeit(rs.getTimestamp("erstelldatum").toLocalDateTime()); version.setErstellDatumZeit(rs.getTimestamp("erstelldatum").toLocalDateTime());
}
version.setBearbeiter(rs.getInt("letzterbearbeiter")); version.setBearbeiter(rs.getInt("letzterbearbeiter"));
if (rs.getTimestamp("letztesbearbeitungsdatum") != null)
if (rs.getTimestamp("letztesbearbeitungsdatum") != null) {
version.setBearbeitetDatumZeit(rs.getTimestamp("letztesbearbeitungsdatum").toLocalDateTime()); version.setBearbeitetDatumZeit(rs.getTimestamp("letztesbearbeitungsdatum").toLocalDateTime());
}
} }


public static List<Icd10Code> getAllIcd10Codes() throws SQLException { public static List<Icd10Code> getAllIcd10Codes() throws SQLException {
@@ -389,7 +398,7 @@ public class DBHandler {
return opscodes; 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); PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_OPSCODE_BY_ID);
ResultSet rs; ResultSet rs;
statement.setString(1, code); statement.setString(1, code);
@@ -439,6 +448,13 @@ public class DBHandler {
return mitarbeiter; 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 { public static List<Untersuchung> getUntersuchungByFall(Fall fall) throws SQLException {
PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_UNTERS_BY_FALLID); PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_UNTERS_BY_FALLID);
statement.setInt(1, fall.getFallID()); statement.setInt(1, fall.getFallID());
@@ -452,6 +468,26 @@ public class DBHandler {
return untersuchungen; 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 { public static void setUntersuchung(Untersuchung untersuchung, int mitarbid, boolean isUpdate) throws SQLException {
PreparedStatement statement; PreparedStatement statement;
if (isUpdate) { if (isUpdate) {
@@ -467,23 +503,13 @@ public class DBHandler {
statement.setBoolean(5, untersuchung.getStorniert()); // storniert statement.setBoolean(5, untersuchung.getStorniert()); // storniert
statement.setTimestamp(6, Timestamp.valueOf(untersuchung.getUntersuchungsdatum())); // Untersuchungsdatum statement.setTimestamp(6, Timestamp.valueOf(untersuchung.getUntersuchungsdatum())); // Untersuchungsdatum
statement.setInt(7, mitarbid); // Letzter Bearbeiter statement.setInt(7, mitarbid); // Letzter Bearbeiter
if (!isUpdate)
if (!isUpdate) {
statement.setInt(8, mitarbid); // Ersteller statement.setInt(8, mitarbid); // Ersteller
}


statement.execute(); 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 { public static List<Diagnose> getDiagnosenByFall(Fall fall) throws SQLException {
PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID); PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID);
statement.setInt(1, fall.getFallID()); statement.setInt(1, fall.getFallID());


Ladataan…
Peruuta
Tallenna