浏览代码

SQL Statements korrigiert, insert/update Patient refactort.

testBranch
父节点
当前提交
6875d878a2
共有 1 个文件被更改,包括 128 次插入102 次删除
  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 查看文件

@@ -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());


正在加载...
取消
保存