|
- package de.uniluebeck.mi.projmi6.db;
-
- import de.uniluebeck.mi.projmi6.model.*;
-
- import java.sql.*;
- import java.sql.Date;
- import java.util.*;
-
- /**
- * Created by nils on 15.11.2015.
- */
- public class DBHandler {
-
- private static final String SELECT_ALL_PATIENTS = "SELECT * FROM `patient`";
- 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`=?," +
- "`Geburtsname`=?," +
- "`Geschlecht`=?," + // TODO: Hausnummer fehlt
- "`KassenID`=?," +
- "`LetzterBearbeiter`=?," +
- "`Nachname`=?," +
- "`Ort`=?," +
- "`PLZ`=?," +
- "`Strasse`=?," +
- "`Telefon`=?," +
- "`Versichertennummer`=?," +
- "`Vorname`=?" +
- "WHERE `ID`=?";
- private static final String INSERT_PATIENT = "INSERT INTO `patient` " +
- "(`CAVE`," +
- "`Familienstand`," +
- "`Geburtsdatum`," +
- "`Geburtsname`," +
- "`Geschlecht`," +
- "`Hausnummer`," +
- "`KassenID`," +
- "`LetzterBearbeiter`," +
- "`Nachname`," +
- "`Ort`," +
- "`PLZ`," +
- "`Strasse`," +
- "`Telefon`," +
- "`Versichertennummer`," +
- "`Vorname`," +
- "`Ersteller`)" +
- "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- private static final String SELECT_ALL_STATIONEN = "SELECT * FROM `stammstation`";
- private static final String SELECT_FAELLE_BY_PATID = "SELECT * FROM `fall` WHERE `patientid` = ?";
- private static final String INSERT_FALL = "INSERT INTO `fall` " +
- "(`Aufnahmedatum`," +
- "`Entlassungsdatum`," +
- "`Vorstelldatum`," +
- "`EinweisenderArzt`," +
- "`Fallart`," +
- "`Selbsteinweisung`," +
- "`Hauptdiagnose`," +
- "`PatientID`," +
- "`Versichertennummer`," +
- "`KassenID`," +
- "`storniert`," +
- "`Letzter Bearbeiter`" +
- "`Ersteller`)," +
- "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- private static final String UPDATE_FALL = "UPDATE `fall`" +
- "SET `Aufnahmedatum`=?," +
- "`Entlassungsdatum`=?," +
- "`Vorstelldatum`=?" +
- "`EinweisenderArzt`=?," +
- "Fallart=?," +
- "`Selbsteinweisung`=?," +
- "Hauptdiagnose=?," +
- "`PatientID`=?," +
- "`Versichertennummer`=?," +
- "KassenID=?," +
- "`storniert`=?," +
- "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`";
- private static final String SELECT_ALL_OPSCODES = "SELECT * FROM `stammops`";
- private static final String SELECT_ICD10CODE_BY_ID = "SELECT * FROM `stammicd10` WHERE `icd10code` = ? AND `version` = ?";
- private static final String SELECT_OPSCODE_BY_ID = "SELECT * FROM `stammops` WHERE `opscode` = ? AND `version` = ?";
- private static final String SELECT_ALL_MITARBEITER = "SELECT * FROM `mitarbeiter`";
- private static final String SELECT_UNTERS_BY_FALLID = "SELECT * FROM `untersuchung` WHERE `fallid` = ?";
- 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`";
-
- public static List<Patient> getAllPatients() throws SQLException {
- Statement statement = MySqlConnFactory.getConnection().createStatement();
- ResultSet rs = statement.executeQuery(SELECT_ALL_PATIENTS);
-
- List<Patient> patients = new ArrayList<>();
- while (rs.next()) {
- patients.add(getPatient(rs));
- }
-
- 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);
- }
-
- 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)
- patient.setGeburtsdatum(rs.getDate("geburtsdatum").toLocalDate());
- patient.setStrasse(rs.getString("strasse"));
- patient.setHausnummer(rs.getString("hausnummer"));
- patient.setPlz(rs.getString("plz"));
- patient.setTelefon(rs.getString("telefon"));
- // patient.setFamilienstand(rs.getString("familienstand")); TODO
- // patient.setGeschlecht(Patient.Geschlecht.valueOf(rs.getString("geschlecht"))); TODO
- patient.setVersichertennummer(rs.getString("versichertennummer"));
- patient.setKassenID(rs.getInt("kassenid"));
- setVersionInformation(patient, rs);
- 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());
-
- statement.executeUpdate();
- }
-
- 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());
-
- statement.execute();
- }
-
- public static List<Station> getAllStationen() throws SQLException {
- Statement statement = MySqlConnFactory.getConnection().createStatement();
- ResultSet rs = statement.executeQuery(SELECT_ALL_STATIONEN);
-
- List<Station> stationen = new ArrayList<>();
- while (rs.next()) {
- stationen.add(getStation(rs));
- }
-
- return stationen;
- }
-
- private static Station getStation(ResultSet rs) throws SQLException {
- Station station = new Station();
- station.setStation(rs.getString("station"));
- station.setBezeichnung(rs.getString("bezeichnung"));
- station.setBezeichnungLang(rs.getString("bezeichnunglang"));
- station.setStationstyp(rs.getInt("stationstyp"));
-
- return station;
- }
-
- public static List<Fall> getFaelleByPatID(int id) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_FAELLE_BY_PATID);
- statement.setInt(1, id);
- ResultSet rs = statement.executeQuery();
-
- List<Fall> faelle = new ArrayList<>();
- while (rs.next()) {
- faelle.add(getFall(rs));
- }
-
- return faelle;
- }
-
- private static Fall getFall(ResultSet rs) throws SQLException {
- Fall fall = new Fall();
-
- fall.setFallID(rs.getInt("fallid"));
- if (rs.getTimestamp("aufnahmedatum") != null)
- fall.setAufnahmeDatum(rs.getTimestamp("aufnahmedatum").toLocalDateTime());
- if (rs.getTimestamp("entlassungsdatum") != null)
- fall.setEntlassungsDatum(rs.getTimestamp("entlassungsdatum").toLocalDateTime());
- if (rs.getInt("hauptdiagnose") != 0)
- fall.setHauptDiagnose(getDiagnose(rs.getInt("hauptdiagnose"), fall));
-
- return fall;
- }
-
- // TODO: Mach eins aus insert und update (boolean Flag in die Methode)
- // private static void setInsertFall(Fall fall, int mitarbid, boolean isUpdate) {
- public static void insertFall(Fall fall, int mitarbid) throws SQLException {
- /*PreparedStatement statement;
- if (isUpdate) {
- statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_FALL);
- } else {
- statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_FALL);
- }*/
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(INSERT_FALL);
-
- if (fall.getAufnahmeDatum() != null)
- statement.setTimestamp(1, Timestamp.valueOf(fall.getAufnahmeDatum())); // Aufnahmedatum
- if (fall.getEntlassungsDatum() != null)
- statement.setTimestamp(2, Timestamp.valueOf(fall.getEntlassungsDatum())); // Entlassungsdatum
- if (fall.getVorstellDatum() != null)
- statement.setTimestamp(3, Timestamp.valueOf(fall.getVorstellDatum())); // Vorstelldatum
- if (fall.getEinweisenderArzt() != null)
- statement.setInt(4, fall.getEinweisenderArzt().getMitarbID()); // EinweisenderArzt
- statement.setString(5, fall.getFallArt().id()); // Fallart
- statement.setBoolean(6, fall.getSelbsteinweisung()); // Selbsteinweisung
- if (fall.getHauptDiagnose() != null)
- statement.setInt(7, fall.getHauptDiagnose().getDiagID()); // Hauptdiagnose
- statement.setInt(8, fall.getPatient().getPatID()); // PatientID
- statement.setString(9, fall.getVersichertenNummer()); // Versichertennummer
- if (fall.getKasse() != null)
- statement.setInt(10, fall.getKasse().getKassenID()); // KassenID
- statement.setBoolean(11, fall.getStorniert()); // storniert
- statement.setInt(12, mitarbid); // Letzter Bearbeiter
- // if (!isUpdate)
- statement.setInt(13, mitarbid); // Ersteller
-
- statement.execute();
- }
-
- // TODO: Kann dann weg.
- public static void updateFall(Fall fall, int mitarbid) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(UPDATE_FALL);
-
- if (fall.getAufnahmeDatum() != null)
- statement.setTimestamp(1, Timestamp.valueOf(fall.getAufnahmeDatum())); // Aufnahmedatum
- if (fall.getEntlassungsDatum() != null)
- statement.setTimestamp(2, Timestamp.valueOf(fall.getEntlassungsDatum())); // Entlassungsdatum
- if (fall.getVorstellDatum() != null)
- statement.setTimestamp(3, Timestamp.valueOf(fall.getVorstellDatum())); // Vorstelldatum
- if (fall.getEinweisenderArzt() != null)
- statement.setInt(4, fall.getEinweisenderArzt().getMitarbID()); // EinweisenderArzt
- statement.setString(5, fall.getFallArt().id()); // Fallart
- statement.setBoolean(6, fall.getSelbsteinweisung()); // Selbsteinweisung
- if (fall.getHauptDiagnose() != null)
- statement.setInt(7, fall.getHauptDiagnose().getDiagID()); // Hauptdiagnose
- statement.setInt(8, fall.getPatient().getPatID()); // PatientID
- statement.setString(9, fall.getVersichertenNummer()); // Versichertennummer
- if (fall.getKasse() != null)
- statement.setInt(10, fall.getKasse().getKassenID()); // KassenID
- statement.setBoolean(11, fall.getStorniert()); // storniert
- statement.setInt(12, mitarbid); // Letzter Bearbeiter
-
- statement.execute();
- }
-
- private static Diagnose getDiagnose(int diagid, Fall fall) throws SQLException {
- Diagnose diagnose = getDiagnose(diagid);
- diagnose.setFall(fall);
-
- return diagnose;
- }
-
- private static Diagnose getDiagnose(int id) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_ID);
- statement.setInt(1, id);
- ResultSet rs = statement.executeQuery();
-
- rs.next(); // TODO
- return getDiagnose(rs);
- }
-
- private static Diagnose getDiagnose(ResultSet rs) throws SQLException {
- Diagnose diagnose = new Diagnose();
-
- diagnose.setFreiText(rs.getString("freitext"));
- diagnose.setArzt(new Mitarbeiter(rs.getInt("arzt")));
- diagnose.setDiagArt(DiagArt.parseInt(rs.getInt("diagart")));
- setVersionInformation(diagnose, rs);
- diagnose.setIcd10code(getIcd10Code(rs.getString("icd10code"), rs.getInt("icd10version")));
- return diagnose;
- }
-
- private static void setVersionInformation(Version version, ResultSet rs) throws SQLException {
- version.setErsteller(rs.getInt("ersteller"));
- if (rs.getTimestamp("erstelldatum") != null)
- version.setErstellDatumZeit(rs.getTimestamp("erstelldatum").toLocalDateTime());
- version.setBearbeiter(rs.getInt("letzterbearbeiter"));
- if (rs.getTimestamp("letztesbearbeitungsdatum") != null)
- version.setBearbeitetDatumZeit(rs.getTimestamp("letztesbearbeitungsdatum").toLocalDateTime());
- }
-
- public static List<Icd10Code> getAllIcd10Codes() throws SQLException {
- Statement statement = MySqlConnFactory.getConnection().createStatement();
- ResultSet rs = statement.executeQuery(SELECT_ALL_ICD10CODES);
-
- List<Icd10Code> icd10codes = new ArrayList<>();
- while (rs.next()) {
- icd10codes.add(getIcd10Code(rs));
- }
-
- return icd10codes;
- }
-
- private static Icd10Code getIcd10Code(String code, int version) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_ICD10CODE_BY_ID);
- ResultSet rs;
- statement.setString(1, code);
- statement.setInt(2, version);
- rs = statement.executeQuery();
-
- rs.next(); // TODO
- return getIcd10Code(rs);
- }
-
- private static Icd10Code getIcd10Code(ResultSet rs) throws SQLException {
- String code = rs.getString("icd10code");
- String text = rs.getString("text");
- int version = rs.getInt("version");
-
- return new Icd10Code(code, text, version);
- }
-
- public static List<OpsCode> getAllOpsCodes() throws SQLException {
- Statement statement = MySqlConnFactory.getConnection().createStatement();
- ResultSet rs = statement.executeQuery(SELECT_ALL_OPSCODES);
-
- List<OpsCode> opscodes = new ArrayList<>();
- while (rs.next()) {
- opscodes.add(getOpsCode(rs));
- }
-
- return opscodes;
- }
-
- public static OpsCode getOpsCode(String code, int version) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_OPSCODE_BY_ID);
- ResultSet rs;
- statement.setString(1, code);
- statement.setInt(2, version);
- rs = statement.executeQuery();
-
- rs.next(); // TODO
- return getOpsCode(rs);
- }
-
- private static OpsCode getOpsCode(ResultSet rs) throws SQLException {
- String code = rs.getString("opscode");
- String text = rs.getString("text");
- int version = rs.getInt("version");
-
- return new OpsCode(code, text, version);
- }
-
- public static List<Mitarbeiter> getAllMitarbeiter() throws SQLException {
- Statement statement = MySqlConnFactory.getConnection().createStatement();
- ResultSet rs = statement.executeQuery(SELECT_ALL_MITARBEITER);
-
- List<Mitarbeiter> mitarbeiters = new ArrayList<>();
- while (rs.next()) {
- mitarbeiters.add(getMitarbeiter(rs));
- }
-
- return mitarbeiters;
- }
-
- private static Mitarbeiter getMitarbeiter(int id) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_MITARBEITER_BY_ID);
- ResultSet rs;
- statement.setInt(1, id);
- rs = statement.executeQuery();
-
- rs.next(); // TODO
- return getMitarbeiter(rs);
- }
-
- private static Mitarbeiter getMitarbeiter(ResultSet rs) throws SQLException {
- Mitarbeiter mitarbeiter = new Mitarbeiter(rs.getInt("mitarbid"));
- mitarbeiter.setTitel(rs.getString("titel"));
- mitarbeiter.setVorname(rs.getString("vorname"));
- mitarbeiter.setNachname(rs.getString("nachname"));
- mitarbeiter.setEinweisenderArzt(rs.getString("einweisenderarzt"));
- return mitarbeiter;
- }
-
- public static List<Untersuchung> getUntersuchungByFall(Fall fall) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_UNTERS_BY_FALLID);
- statement.setInt(1, fall.getFallID());
- ResultSet rs = statement.executeQuery();
-
- List<Untersuchung> untersuchungen = new ArrayList<>();
- while (rs.next()) {
- untersuchungen.add(getUntersuchung(rs, fall));
- }
-
- 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;
- }
-
- public static List<Diagnose> getDiagnosenByFall(Fall fall) throws SQLException {
- PreparedStatement statement = MySqlConnFactory.getConnection().prepareStatement(SELECT_DIAGNOSE_BY_FALLID);
- statement.setInt(1, fall.getFallID());
- ResultSet rs = statement.executeQuery();
-
- List<Diagnose> diagnosen = new ArrayList<>();
- while (rs.next()) {
- diagnosen.add(getDiagnose(rs.getInt("diagid"), fall));
- }
-
- return diagnosen;
- }
-
- public static List<Kasse> getAllKassen() throws SQLException {
- Statement statement = MySqlConnFactory.getConnection().createStatement();
- ResultSet rs = statement.executeQuery(SELECT_ALL_KASSEN);
-
- List<Kasse> kassen = new ArrayList<>();
- while (rs.next()) {
- kassen.add(getKasse(rs));
- }
-
- return kassen;
- }
-
- private static Kasse getKasse(ResultSet rs) throws SQLException {
- Kasse kasse = new Kasse();
- kasse.setKassenID(rs.getInt("kassenid"));
- kasse.setName(rs.getString("name"));
- kasse.setAdresse(rs.getString("adresse"));
- kasse.setPrivat(rs.getBoolean("privat"));
- setVersionInformation(kasse, rs);
- return kasse;
- }
- }
|