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;
}
}