package com.tarisan.control; import com.tarisan.data.Paciente; import com.tarisan.data.TTMovaut; import com.tarisan.data.Tarjeta; import com.tarisan.data.Taconaut; import com.tarisan.excepcion.ExcepcionTarisan; import com.tarisan.log.LogTarisan; import com.tarisan.log.NivelLog; import com.tarisan.util.Utilidades; import java.sql.*; import java.util.Vector; /** * Controla los accesos a la Tabla TTMovaut para gestionar las autorizaciones de un beneficiario * @author csm_jjripaper * */ public class PersistenciaTTMovaut implements Constantes { /** * El objeto Paginacion que controla el número de filas a mostrar por cada página. */ private Paginacion objPaginacion = new Paginacion(); /** * Obtiene el valor del objeto Paginacion para saber que página se está visualizando. * @return El objeto Paginacion */ public Paginacion getPaginacion() { return objPaginacion; } /** * Obtener el número de autorización a partir de la entidad, colectivo, poliza y orden de un beneficiario * @param entidad La entidad * @param col El colectivo * @param pol La póliza * @param ord El orden * @return El número de autorización, 0 si no tiene ninguna activa. */ public long ObtenerAutorizacion(int entidad, int col, int pol, int ord, int medico) { long autorizacion = 0; Paciente pac = new Paciente(); Tarjeta tarjeta = new Tarjeta(); tarjeta.setColectivo(col); tarjeta.setPoliza(pol); tarjeta.setBeneficiario(ord); pac.setTarjeta(tarjeta); autorizacion = ObtenerAutorizacion(pac, medico); return autorizacion; } /** * Obtener el número de autorización a partir de un objeto paciente * @param pac El paciente * @param medico El médico solicitante de la autorizacion * @return El número de autorización, 0 si no tiene ninguna autorización */ public long ObtenerAutorizacion(Paciente pac, int medico) { long autorizacion = 0; int acto = 0; int cantidad = 0; StringBuffer sqlSelect = new StringBuffer(); PersistenciaTamedico persistenciaTamedico = new PersistenciaTamedico(); try { sqlSelect.append("SELECT autorizacion from ttmovaut "); sqlSelect.append("WHERE MEDICO = ? "); sqlSelect.append("AND (especialidad1 = ? or "); sqlSelect.append("especialidad2 = ? or "); sqlSelect.append("especialidad3 = ? or "); sqlSelect.append("especialidad4 = ?) "); sqlSelect.append("AND colectivo = ? "); sqlSelect.append("AND poliza = ? "); sqlSelect.append("AND orden = ? "); sqlSelect.append("AND fecha_autorizacion <= sysdate"); sqlSelect.append(" order by FECHA_AUTORIZACION asc"); Object aCondiciones[] = new Object[8]; aCondiciones[0] = Integer.valueOf(medico); aCondiciones[1] = Integer.valueOf(persistenciaTamedico.obtenerEspecialidad(medico)); aCondiciones[2] = Integer.valueOf(persistenciaTamedico.obtenerEspecialidad(medico)); aCondiciones[3] = Integer.valueOf(persistenciaTamedico.obtenerEspecialidad(medico)); aCondiciones[4] = Integer.valueOf(persistenciaTamedico.obtenerEspecialidad(medico)); aCondiciones[5] = Long.valueOf(pac.getTarjeta().getColectivo()); aCondiciones[6] = Double.valueOf(pac.getTarjeta().getPoliza()); aCondiciones[7] = Integer.valueOf(pac.getTarjeta().getBeneficiario()); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); LogTarisan.logger.log(NivelLog.DEBUG, "Sentencia:" +Utilidades.obtenerSentenciaSQL(sqlSelect, null, aCondiciones)); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones); while(rs.next()) { autorizacion = rs.getLong("autorizacion"); } rs.close(); } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } return autorizacion; } /** * Clase para saber que actos están incluidos en una autorización y que el médico solo pueda seleccionar entre esos actos. * @param autorizacion El número de la autorización * @return Un vector con los códigos de los actos autorizados */ public Vector ObtenerActosAutorizados(long autorizacion, int especialidad){ Vector vSeleccion = new Vector(); StringBuffer sqlSelect = new StringBuffer(); try { sqlSelect.append("SELECT acto1, especialidad2, acto2, especialidad3, acto3, especialidad4, acto4 from ttmovaut "); sqlSelect.append("WHERE autorizacion = ? "); Object aCondiciones[] = new Object[1]; aCondiciones[0] = Long.valueOf(autorizacion); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones); while(rs.next()) { vSeleccion.addElement(rs.getInt("acto1")); if(rs.getInt("especialidad2") == especialidad) vSeleccion.addElement(rs.getInt("acto2")); if(rs.getInt("especialidad3") == especialidad) vSeleccion.addElement(rs.getInt("acto3")); if(rs.getInt("especialidad4") == especialidad) vSeleccion.addElement(rs.getInt("acto4")); } rs.close(); } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } return vSeleccion; } public Vector ObtenerAutorizacionesPoliza(long autorizacion) { Vector resultado = new Vector(); TTMovaut ttmov = ObtenerAutorizacionTTmovaut(autorizacion); StringBuffer sqlSelect = new StringBuffer(); try { sqlSelect.append("select autorizacion from ttmovaut "); sqlSelect.append("where entidad = ? "); sqlSelect.append("and colectivo = ? "); sqlSelect.append("and poliza = ? "); sqlSelect.append("and orden = ? "); Object aCondiciones[] = new Object[4]; aCondiciones[0] = Integer.valueOf(ttmov.get_entidad()); aCondiciones[1] = Long.valueOf(ttmov.get_colectivo()); aCondiciones[2] = Long.valueOf(ttmov.get_poliza()); aCondiciones[3] = Integer.valueOf(ttmov.get_orden()); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones); while(rs.next()) { resultado.add(rs.getLong("AUTORIZACION")); } } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de las autorizaciones del paciente: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de las autorizaciones del paciente: " + e.toString() + " (" + sqlSelect + ")"); } return resultado; } public Vector ObtenerAutorizacionADM(long autorizacion) { Vector resultado = new Vector(); Taconaut tacon = new Taconaut(); StringBuffer sqlSelect = new StringBuffer(); try { sqlSelect.append("select * from ttmovaut "); sqlSelect.append("where autorizacion = ?"); Object aCondiciones[] = new Object[1]; aCondiciones[0] = Long.valueOf(autorizacion); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones); while(rs.next()) { for(int i=1;i<5;i++) { if(rs.getInt("cantidad"+i) >0) { LogTarisan.logger.log(NivelLog.DEBUG, "ObtenerAutorizacionADM - Llega 165 - Iteracion: "+i); tacon = new Taconaut(); tacon.setActo(rs.getInt("acto"+i)); tacon.setAutorizacion(String.valueOf(autorizacion)); tacon.setCantidad(rs.getInt("cantidad"+i)); tacon.setEspecialidad(rs.getInt("especialidad"+i)); tacon.setFromGesigu(true); tacon.setInforme(""); tacon.setMedico(rs.getInt("medico")); resultado.add(tacon); } } } } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } return resultado; } public TTMovaut ObtenerAutorizacionTTmovaut(long autorizacion){ TTMovaut ttmov = new TTMovaut(); LogTarisan.logger.log(NivelLog.DEBUG, "Inicia ObtenerAutorizacionTTMovaut"); StringBuffer sqlSelect = new StringBuffer(); try { sqlSelect.append("Select * from ttmovaut "); sqlSelect.append("where autorizacion = ?"); Object aCondiciones[] = new Object[1]; aCondiciones[0] = Long.valueOf(autorizacion); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones); if(rs.next()) { LogTarisan.logger.log(NivelLog.DEBUG, "Se encuentra la autorizacion: "+autorizacion); ttmov.set_autorizacion(autorizacion); ttmov.set_medico(rs.getInt("MEDICO")); ttmov.set_especialidad1(rs.getInt("ESPECIALIDAD1")); ttmov.set_acto1(rs.getInt("ACTO1")); ttmov.set_entidad(rs.getInt("ENTIDAD")); ttmov.set_colectivo(rs.getLong("COLECTIVO")); ttmov.set_poliza(rs.getLong("POLIZA")); ttmov.set_orden(rs.getInt("ORDEN")); ttmov.set_fecha_autorizacion(rs.getDate("FECHA_AUTORIZACION")); ttmov.set_prescriptor(rs.getInt("PRESCRIPTOR")); ttmov.set_provincia(rs.getString("PROVINCIA")); ttmov.set_cantidad1(rs.getInt("CANTIDAD1")); ttmov.set_descripcion1(rs.getString("DESCRIPCION1")); ttmov.set_fecha_validez(rs.getDate("FECHA_VALIDEZ")); ttmov.set_nombre_completo(rs.getString("NOMBRE_COMPLETO")); ttmov.set_especialidad2(rs.getInt("ESPECIALIDAD2")); ttmov.set_acto2(rs.getInt("ACTO2")); ttmov.set_cantidad2(rs.getInt("CANTIDAD2")); ttmov.set_descripcion2(rs.getString("DESCRIPCION2")); ttmov.set_especialidad3(rs.getInt("ESPECIALIDAD3")); ttmov.set_acto3(rs.getInt("ACTO3")); ttmov.set_cantidad3(rs.getInt("CANTIDAD3")); ttmov.set_descripcion3(rs.getString("DESCRIPCION3")); ttmov.set_especialidad4(rs.getInt("ESPECIALIDAD4")); ttmov.set_acto4(rs.getInt("ACTO4")); ttmov.set_cantidad4(rs.getInt("CANTIDAD4")); ttmov.set_descripcion4(rs.getString("DESCRIPCION4")); ttmov.set_texto(rs.getString("TEXTO")); ttmov.set_usuario(rs.getString("USUARIO")); LogTarisan.logger.log(NivelLog.DEBUG, "Se ha cargado bien la autorizacion: "+autorizacion); } } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } LogTarisan.logger.log(NivelLog.DEBUG, "Fin ObtenerAutorizacionTTMovaut"); return ttmov; } public int ObtenerCantidadActoAutorizado(long autorizacion, int acto) { int cuantos = 0; StringBuffer sqlSelect = new StringBuffer(); try { sqlSelect.append("SELECT cantidad1, cantidad2, cantidad3, cantidad4, acto1, acto2, acto3, acto4 from ttmovaut "); sqlSelect.append("WHERE autorizacion = ? "); sqlSelect.append("and (acto1 = ? or acto2 = ? or acto3 = ? or acto4 = ?)"); Object aCondiciones[] = new Object[5]; aCondiciones[0] = Long.valueOf(autorizacion); aCondiciones[1] = Integer.valueOf(acto); aCondiciones[2] = Integer.valueOf(acto); aCondiciones[3] = Integer.valueOf(acto); aCondiciones[4] = Integer.valueOf(acto); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones); while(rs.next()) { if(rs.getInt("acto1") == acto) cuantos = rs.getInt("cantidad1"); if(rs.getInt("acto2") == acto) cuantos = rs.getInt("cantidad2"); if(rs.getInt("acto3") == acto) cuantos = rs.getInt("cantidad3"); if(rs.getInt("acto4") == acto) cuantos = rs.getInt("cantidad4"); } rs.close(); } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en ObtenerCantidadActoAutorizado: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en ObtenerCantidadActoAutorizado: " + e.toString() + " (" + sqlSelect + ")"); } return cuantos; } /*public Vector BuscarAutorizacionPorMedicoYPoliza(int medico, int colectivo, long poliza, int orden) { Vector resultado = new Vector(); String sqlSelect = new String(); String tarjeta=""; String tarjeta_chipcard=""; try { sqlSelect = "select * from ttmovaut where medico = "+ medico + " and colectivo = "+ colectivo + " and poliza = "+ poliza + " and orden = "+ orden; Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString()); while(rs.next()) { LogTarisan.logger.log(NivelLog.DEBUG, "BuscarAutorizacionPorMedicoYPoliza - Llega 165 - Iteracion: "); Taconaut tacon = new Taconaut(); tacon.setActo(rs.getInt("acto1")); tacon.setAutorizacion(rs.getString("autorizacion")); tacon.setCantidad(rs.getInt("cantidad1")); tacon.setEspecialidad(rs.getInt("especialidad1")); tacon.setFromGesigu(true); tacon.setInforme(""); tacon.setMedico(rs.getInt("medico")); resultado.add(tacon); } rs.close(); } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } return resultado; } */ public Vector BuscarAutorizacionPorMedicoYPoliza(int medico, int colectivo, long poliza, int orden, int pagina) { int elementosPaginacion=1; Vector resultado = new Vector(); String sqlSelect = new String(); String tarjeta=""; String tarjeta_chipcard=""; try { sqlSelect = "select * from ttmovaut where medico = "+ medico + " and colectivo = "+ colectivo + " and poliza = "+ poliza + " and orden = "+ orden; Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString()); objPaginacion.inicializarPaginacion(rs); if (objPaginacion.getNumeroRegistrosTotales()!=0) { objPaginacion.realizarPaginacion(rs, pagina); while(rs.next() && (elementosPaginacion <= Paginacion.getFilasPorPagina())) { LogTarisan.logger.log(NivelLog.DEBUG, "BuscarAutorizacionPorMedicoYPoliza - Llega 165 - Iteracion: "); Taconaut tacon = new Taconaut(); tacon.setActo(rs.getInt("acto1")); tacon.setAutorizacion(rs.getString("autorizacion")); tacon.setCantidad(rs.getInt("cantidad1")); tacon.setEspecialidad(rs.getInt("especialidad1")); tacon.setFromGesigu(true); tacon.setInforme(""); tacon.setMedico(rs.getInt("medico")); resultado.add(tacon); if (pagina!=0) //Se quiere realizar la paginacion elementosPaginacion++; } } rs.close(); } catch (ExcepcionTarisan e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } catch (SQLException e) { LogTarisan.logger.log(NivelLog.ERROR, "Error en la selección de la autorizacion del paciente: " + e.toString() + " (" + sqlSelect + ")"); } return resultado; } }