Respuesta de la entidad emisora: "+respuesta.get_respuesta()+" Motivo: "+ respuesta.get_mensaje().substring(pos)+"");
/*if(respuesta.get_respuesta().contains(ParametrosConfiguracion.chipcard_oper_auto))
sesion.setAttribute("mensaje", ""+"No se ha podido facturar el acto.
");
else
sesion.setAttribute("mensaje", ""+"No se ha podido facturar el acto.
Respuesta de la entidad emisora: "+respuesta.get_respuesta()+" Motivo: "+ respuesta.get_mensaje().substring(pos)+"");*/
}
}
}
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
private boolean facturacionSesionRehabPod(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
boolean resultado = false;
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
long autorizacion = Long.valueOf(request.getParameter("autorizacion"));
try
{
LogTarisan.logger.log(NivelLog.DEBUG, "GestorPacientes.java - facturacionSesionRehabPod - Inicio");
PersistenciaTaconaut perTaconaut = new PersistenciaTaconaut();
//RestarSesion(int autorizacion, int medico, int acto, int especialidad)
String strCodigoActos = (String)request.getParameter("listaCodigoElementosPrescripcion");
String limpio = strCodigoActos.replaceAll("Â", "");
strCodigoActos = limpio;
int intEspecialidad = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad();
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
int intTarifa = ((Usuario)sesion.getAttribute("USUARIO")).getTarifa();
int intEntidad = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadIMQ();
long intColectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
double dblPoliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
int intBeneficiario = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
String tarjetaChipcard = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjetaDesplazado();
if(tarjetaChipcard == null)
tarjetaChipcard = "";
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
PersistenciaTamovext perTamovext = new PersistenciaTamovext();
//int intUltimoValorNumSeq = perTamovext.obtenerUltimoValorNumSeq(intMedico);
PersistenciaTtactmed perttactmed = new PersistenciaTtactmed();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 2108: StrCodigoActos: "+strCodigoActos);
limpio = strCodigoActos.replaceAll("Â", "");
StringTokenizer st = new StringTokenizer(limpio, "¬");
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 2111: StrCodigoActosLimpio: "+limpio);
String actos="";
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
boolean error = false;
while (st.hasMoreTokens() && !error)
{
//obtenemos los valores especificos para cada acto medico
int acto = Integer.parseInt( st.nextToken() );
//hacemos la insert en tamovext para que se le facture al médico
/*
* strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, NUMSEQ, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, AUTORIZACION, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
*/
Object [] aValores = new Object[14];
aValores[0] = Integer.valueOf(intMedico);
aValores[1] = Integer.valueOf(intEspecialidad);
aValores[2] = Integer.valueOf(acto);
//aValores[3] = Integer.valueOf(intUltimoValorNumSeq + 1);
aValores[3] = Long.valueOf(intColectivo);
aValores[4] = Double.valueOf(dblPoliza);
aValores[5] = Integer.valueOf(intBeneficiario);
aValores[6] = dtFecha;
aValores[7] = Double.valueOf(perttactmed.obtenerPrecioActoMedico(intTarifa, acto, intEspecialidad));
aValores[8] = Integer.valueOf(intMedico);
aValores[9] = Integer.valueOf(intEntidad);
aValores[10] = new String(tarjetaChipcard);
aValores[11] = Long.valueOf(autorizacion);
aValores[12] = Integer.valueOf(intEspecialidad);
aValores[13] = Integer.valueOf(acto);
//intUltimoValorNumSeq++;
actos += String.valueOf(acto);
actos += ", ";
//Hacer que si es adeslas compruebe con chipcard:
/*String pista2 = Utilidades.extraerPista2(valorTarjeta);
String talon_chipcard = Tarisan.check_card(ParametrosConfiguracion.chipcard_login, ParametrosConfiguracion.chipcard_pass, Integer.parseInt(ParametrosConfiguracion.chipcard_terminal), Integer.parseInt(ParametrosConfiguracion.chipcard_company), ParametrosConfiguracion.chipcard_url, pista2, ParametrosConfiguracion.chipcard_profesional, 40, Integer.parseInt(ParametrosConfiguracion.chipcard_lista), 1);
Thread.sleep(1510);
LogTarisan.logger.log(NivelLog.DEBUG, "El tvs devuelve: "+talon_chipcard);
RespuestaChipcard respuesta = new RespuestaChipcard();
PersistenciaRespuestaChipcard perRes = new PersistenciaRespuestaChipcard();
respuesta = perRes.parsearRespuesta(talon_chipcard);
sMensaje = "La tarjeta de Adeslas Respuesta de chipcard Error? "+respuesta.get_error()+": terminal: "+respuesta.get_terminal()+" respuesta: "+respuesta.get_respuesta() +" mensaje: "+ respuesta.get_mensaje() +" num_aut: "+respuesta.get_talon_chipcard();
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;*/
/*
* Marimar ticket 734133
* Algunos médicos usan 2 ordenadores y consiguen imputar el mismo acto el mismo día...
*
*
* public boolean PermitirImputarActo(long autorizacion, int especialidad, int acto, String tarjeta)
*/
PersistenciaTaconaut pertaconaut = new PersistenciaTaconaut();
if(!pertaconaut.PermitirImputarActo(autorizacion,intEspecialidad,acto,""))
{
LogTarisan.logger.log(NivelLog.INFO, "Medico listillo desde 2 equipos a la vez no le dejamos cargarse otro acto");
throw new ExcepcionTarisan("Doble facturacion");
}
//insertamos en tamovext para que se le facture al médico.
if(perTamovext.insertarTamovext(aValores, conexion))
{
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha insertado correctamente el movimiento en tamovext. Rehabilitacion, autorizacion: " + autorizacion);
}
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
StringBuffer strSql = new StringBuffer();
int perfilsesion = Integer.parseInt((String)sesion.getAttribute("PERFIL"));
strSql.append("INSERT INTO TAMOVEXT");// (MEDICO, ESPECIALIDAD, ACTO, NUMSEQ, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, autorizacion) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, AUTORIZACION, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMOVEXT", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
if(perfilsesion == Integer.parseInt(Constantes.PERFIL_ATS) && ParametrosConfiguracion.actos_ats_curas.contains(String.valueOf(acto)))
{
if(perTaconaut.ActualizarFechaModificacion(autorizacion, acto, intEspecialidad))
LogTarisan.logger.log(NivelLog.INFO, "No restamos de taconaut por que es una cura, pero actualizamos su fecha de modificacion");
}
else
{
boolean restar = false;
if(perfilsesion == Integer.parseInt(Constantes.PERFIL_ATS))
restar = perTaconaut.RestarSesion(autorizacion, acto, intEspecialidad);
//restar = perTaconaut.RestarSesion(Aut, Med, acto, intEspecialidad);
else
restar = perTaconaut.RestarSesion(autorizacion, intMedico, acto, intEspecialidad);
if(restar)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha restado correctamente la sesion a la autorizacion:" + autorizacion);
}
else
{
LogTarisan.logger.log(NivelLog.ERROR, "No se ha restado de taconaut la sesion de la autorizacion: " + autorizacion);
error = true;
}
}
}
if(!error)
{
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
resultado = true;
}
else
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
sesion.setAttribute("RESULTADO", "Se ha imputado correctamente el acto: " + actos.substring(0, actos.length()-2));
LogTarisan.logger.log(NivelLog.DEBUG, "GestorPacientes.java - facturacionSesionRehabPod - Fin");
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Excepcion: " + ex + ". En la autorizacion: " + autorizacion);
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
throw new ExcepcionTarisan(ex.getMessage());
}
return resultado;
}
/**
* Realiza la facturación de los actos prescribibles.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
*/
private boolean facturacionActosPrescribibles(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
boolean resultado = false;
try
{
int intTarifa = ((Usuario)sesion.getAttribute("USUARIO")).getTarifa();
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long intColectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
double dblPoliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
int intBeneficiario = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
int intEspecialidad = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad();
int intEntidad = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadIMQ();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
String strCodigoActos = (String)request.getParameter("listaCodigoElementosPrescripcion");
String limpio = strCodigoActos.replaceAll("Â", "");
strCodigoActos = limpio;
LogTarisan.logger.log(NivelLog.DEBUG, "llega 1527");
String tarjetaChipcard = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjetaDesplazado();
if(tarjetaChipcard == null)
tarjetaChipcard = "";
int actoErroneo = 0;
int intCodActo=0;
//comprobamos si la poliza es una de las igualas del medico
PersistenciaTapolfac perTapolfac = new PersistenciaTapolfac();
Integer blnEsPolizaIgualaMedico = perTapolfac.esPolizaIgualaMedico(intMedico, intColectivo, dblPoliza);
//obtenemos el perfil del medico
String perfil = (String)sesion.getAttribute("PERFIL");
//Si el médico es especialista (no es de cabecera) o el médico es de cabecera pero la póliza no es igualas puede continuar
if (perfil.equalsIgnoreCase(Constantes.PERFIL_ESPECIALISTA) || perfil.equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA) || (perfil.equalsIgnoreCase(Constantes.PERFIL_CABECERA) && (blnEsPolizaIgualaMedico == 0)) || perfil.equalsIgnoreCase(Constantes.PERFIL_DENTISTA))
{
PersistenciaTamovext perTamovext = new PersistenciaTamovext();
PersistenciaTtactmed perttactmed = new PersistenciaTtactmed();
PersistenciaTamovmpo perTamovmpo = new PersistenciaTamovmpo();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
PersistenciaTaprimer perTaprimer = new PersistenciaTaprimer();
//obtenemos el ultimo valor del campo numseq de la tabla tamovext.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
/*
* Cambiamos este campo a tipo autoincrement en oracle.
int intUltimoValorNumSeq = perTamovext.obtenerUltimoValorNumSeq(intMedico);
*/
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
limpio = strCodigoActos.replaceAll("Â", "");
StringTokenizer st = new StringTokenizer(limpio, "¬");
boolean seguir = true;
while (st.hasMoreTokens() && seguir)
{
//obtenemos los valores especificos para cada acto medico
intCodActo = Integer.parseInt( st.nextToken() );
seguir = perTaprimer.sePuedeAutoprescribible(intMedico, intEntidad, intColectivo, dblPoliza, intBeneficiario, intCodActo);
if(!seguir)
actoErroneo = intCodActo;
}
if(seguir)
{
try
{
//introducimos para cada acto medico un nuevo registro en la tabla movext
strSql = new StringBuffer();
strSql.append("INSERT INTO TAMOVEXT");
//strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, NUMSEQ, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)"); //
strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, AUTORIZACION, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
//inicializamos el array con los valores fijos
aValores = new Object[14];
aValores[0] = Integer.valueOf(intMedico);
aValores[1] = Integer.valueOf(intEspecialidad);
aValores[3] = Long.valueOf(intColectivo);
aValores[4] = Double.valueOf(dblPoliza);
aValores[5] = Integer.valueOf(intBeneficiario);
aValores[6] = dtFecha;
aValores[8] = Integer.valueOf(intMedico);
aValores[9] = Integer.valueOf(intEntidad);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 2316");
aValores[10] = new String(tarjetaChipcard);
aValores[11] = Integer.valueOf(0);
aValores[12] = Integer.valueOf(intEspecialidad);
intCodActo=0;
st = new StringTokenizer(strCodigoActos, "¬");
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 2325");
while (st.hasMoreTokens())
{
//obtenemos los valores especificos para cada acto medico
intCodActo = Integer.parseInt( st.nextToken() );
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 2330");
aValores[2] = Integer.valueOf(intCodActo);
// Cambiar acto_chipcard
int actoChipcard = intCodActo;
PersistenciaTamovext perTamovex = new PersistenciaTamovext();
if(perTamovex.esPrimeraVisitaDesplazado(intMedico, tarjetaChipcard, true))
{
if(intCodActo == 2 && !perTamovext.tieneConsultaChipcard(intMedico, tarjetaChipcard))
actoChipcard = 1;
if(intCodActo == 1 && perTamovext.tieneConsultaChipcard(intMedico, tarjetaChipcard))
actoChipcard = 2;
}
aValores[13] = Integer.valueOf(actoChipcard);
//aValores[3] = Integer.valueOf(intUltimoValorNumSeq + 1);
aValores[7] = Double.valueOf( perttactmed.obtenerPrecioActoMedico(intTarifa, intCodActo, intEspecialidad) );
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 1605");
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes - Obtener precio acto medico con intTarifa="+intTarifa+", intCodActo="+intCodActo+", intEspecialidad="+intEspecialidad+"\n\n");
//intUltimoValorNumSeq++;
//hay que insertar los valores de chipcard para todos los movimientos
//insertamos el registro
//perTamovext.insertarMovimiento(strSql.toString(), aValores, conexion);
perTamovext.insertarTamovext(aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
strSql = new StringBuffer();
strSql.append("INSERT INTO TAMOVEXT");
strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, AUTORIZACION, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMOVEXT", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//introducimos para cada acto medico un nuevo registro en la tabla tamovmpo
strSql = new StringBuffer();
strSql.append("INSERT INTO TAMOVMPO");
strSql.append(" (MEDICO, COLEC, POLIZA, ORDEN, FECHA, NUMERO, TEXTO)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?)");
//inicializamos el array con los valores fijos
aValores = new Object[7];
aValores[0] = Integer.valueOf(intMedico);
aValores[1] = Long.valueOf(intColectivo);
aValores[2] = Double.valueOf(dblPoliza);
aValores[3] = Integer.valueOf(intBeneficiario);
aValores[4] = dtFecha;
//obtenemos el ultimo valor del campo numseq de la tabla movext.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorNumero = perTamovmpo.obtenerUltimoNumero(intMedico, intColectivo, dblPoliza, intBeneficiario, dtFecha);
st = new StringTokenizer((String)request.getParameter("listaElementosPrescripcion"), "¬");
while (st.hasMoreTokens())
{
aValores[5] = Integer.valueOf(intUltimoValorNumero + 1);
aValores[6] = st.nextToken();
intUltimoValorNumero++;
//insertamos el registro
perTamovmpo.insertarMovimiento(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMOVMPO", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el valor de la primera visita en caso de que sea necesario
if ( strCodigoActos.indexOf("¬" + ParametrosConfiguracion.codigoPrimeraVisita + "¬") != -1 ){ //se ha seleccionado el acto medico PRIMERA VISITA
intCodActo = ParametrosConfiguracion.codigoPrimeraVisita;
actualizarPrimeraVisita(intMedico, intColectivo, dblPoliza, intBeneficiario, intCodActo, conexion);
}
//actualizamos el valor de la primera limpieza en caso de que sea necesario
if ( strCodigoActos.indexOf("¬" + ParametrosConfiguracion.codigoPrimeraLimpieza + "¬") != -1 ){ //se ha seleccionado el acto medico PRIMERA LIMPIEZA
intCodActo = ParametrosConfiguracion.codigoPrimeraLimpieza;
actualizarPrimeraLimpieza(intMedico, intColectivo, dblPoliza, intBeneficiario, intCodActo, conexion);
}
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
resultado = true;
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
}
else
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha intentado prescribir dos veces un acto autoprescribible");
if(perfil.equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA))
sesion.setAttribute("VUELTA", "No puede imputar el acto");
sesion.setAttribute("ERROR", "No puede imputar el acto "+perttactmed.obtenerNombreActo(actoErroneo, intEspecialidad).trim()+", por que ya se le ha imputado hoy.");
}
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
//throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
//throw new ExcepcionTarisan(ex.getMessage());
}
return resultado;
}
private boolean facturacionActosPrescribiblesEstomatologia(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
boolean resultado = false;
try
{
int intContrato = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getContrato();
int intTarifa = ((Usuario)sesion.getAttribute("USUARIO")).getTarifa();
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long intColectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
double dblPoliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
int intBeneficiario = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
int intEspecialidad = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad();
int intEntidad = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadIMQ();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
String strCodigoActos = (String)request.getParameter("listaCodigoElementosPrescripcion");
String limpio = strCodigoActos.replaceAll("Â", "");
strCodigoActos = limpio;
LogTarisan.logger.log(NivelLog.DEBUG, "llega 1527");
String tarjetaChipcard = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjetaDesplazado();
if(tarjetaChipcard == null)
tarjetaChipcard = "";
int actoErroneo = 0;
int intCodActo=0;
//comprobamos si la poliza es una de las igualas del medico
PersistenciaTapolfac perTapolfac = new PersistenciaTapolfac();
Integer blnEsPolizaIgualaMedico = perTapolfac.esPolizaIgualaMedico(intMedico, intColectivo, dblPoliza);
//obtenemos el perfil del medico
String perfil = (String)sesion.getAttribute("PERFIL");
//Si el médico es especialista (no es de cabecera) o el médico es de cabecera pero la póliza no es igualas puede continuar
if (perfil.equalsIgnoreCase(Constantes.PERFIL_ESPECIALISTA) || perfil.equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA) || (perfil.equalsIgnoreCase(Constantes.PERFIL_CABECERA) && (blnEsPolizaIgualaMedico == 0)) || perfil.equalsIgnoreCase(Constantes.PERFIL_DENTISTA))
{
PersistenciaTamovextDental perTamovextDental = new PersistenciaTamovextDental();
PersistenciaTtactmed perttactmed = new PersistenciaTtactmed();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
PersistenciaTaprimer perTaprimer = new PersistenciaTaprimer();
//obtenemos el ultimo valor del campo numseq de la tabla tamovext.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorNumSeq = perTamovextDental.obtenerUltimoValorNumSeq(intMedico);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
StringTokenizer st = new StringTokenizer(strCodigoActos, "¬");
boolean seguir = true;
while (st.hasMoreTokens() && seguir)
{
//obtenemos los valores especificos para cada acto medico
intCodActo = Integer.parseInt( st.nextToken() );
//seguir = perTaprimer.sePuedeAutoprescribible(intMedico, intEntidad, intColectivo, dblPoliza, intBeneficiario, intCodActo,intContrato);
//seguir = perTaprimer.sePuedeAutoprescribible(intMedico, intEntidad, intColectivo, dblPoliza, intBeneficiario, intCodActo);
// TODO
// permitimos insertar todos los actos todas las veces que quieran
seguir = true;
if(!seguir)
actoErroneo = intCodActo;
}
if(seguir)
{
try
{
//introducimos para cada acto medico un nuevo registro en la tabla movext_dental
strSql = new StringBuffer();
strSql.append("INSERT INTO TAMOVEXT_DENTAL");
//strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, NUMSEQ, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)"); //
strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, NUMSEQ, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, AUTORIZACION, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
//inicializamos el array con los valores fijos
aValores = new Object[15];
aValores[0] = Integer.valueOf(intMedico);
aValores[1] = Integer.valueOf(intEspecialidad);
aValores[4] = Long.valueOf(intColectivo);
aValores[5] = Double.valueOf(dblPoliza);
aValores[6] = Integer.valueOf(intBeneficiario);
aValores[7] = dtFecha;
aValores[9] = Integer.valueOf(intMedico);
aValores[10] = Integer.valueOf(intEntidad);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 1591");
aValores[11] = new String(tarjetaChipcard);
aValores[12] = Integer.valueOf(0);
aValores[13] = Integer.valueOf(intEspecialidad);
intCodActo=0;
st = new StringTokenizer(strCodigoActos, "¬");
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 1596");
while (st.hasMoreTokens())
{
//obtenemos los valores especificos para cada acto medico
intCodActo = Integer.parseInt( st.nextToken() );
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 1601");
aValores[2] = Integer.valueOf(intCodActo);
aValores[14] = Integer.valueOf(intCodActo);
aValores[3] = Integer.valueOf(intUltimoValorNumSeq + 1);
// TODO
// Ver si queremos seguir sacando los precios desde ttactmed o desde ttfranquicias...
aValores[8] = Double.valueOf( perttactmed.obtenerPrecioActoMedico(intTarifa, intCodActo, intEspecialidad) );
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes 1605");
LogTarisan.logger.log(NivelLog.DEBUG, "\n\nGestorPacientes - Obtener precio acto medico con intTarifa="+intTarifa+", intCodActo="+intCodActo+", intEspecialidad="+intEspecialidad+"\n\n");
intUltimoValorNumSeq++;
//hay que insertar los valores de chipcard para todos los movimientos
//insertamos el registro
//perTamovext.insertarMovimiento(strSql.toString(), aValores, conexion);
perTamovextDental.insertarTamovextDental(aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
strSql = new StringBuffer();
strSql.append("INSERT INTO TAMOVEXT_DENTAL");
strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, NUMSEQ, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, AUTORIZACION, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
intUltimoValorCorrelativo++;
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMOVEXT_DENTAL", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el valor de la primera visita en caso de que sea necesario
if ( strCodigoActos.indexOf("¬" + ParametrosConfiguracion.codigoPrimeraVisita + "¬") != -1 ){ //se ha seleccionado el acto medico PRIMERA VISITA
intCodActo = ParametrosConfiguracion.codigoPrimeraVisita;
actualizarPrimeraVisita(intMedico, intColectivo, dblPoliza, intBeneficiario, intCodActo, conexion);
}
//actualizamos el valor de la primera limpieza en caso de que sea necesario
if ( strCodigoActos.indexOf("¬" + ParametrosConfiguracion.codigoPrimeraLimpieza + "¬") != -1 ){ //se ha seleccionado el acto medico PRIMERA LIMPIEZA
intCodActo = ParametrosConfiguracion.codigoPrimeraLimpieza;
actualizarPrimeraLimpieza(intMedico, intColectivo, dblPoliza, intBeneficiario, intCodActo, conexion);
}
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
resultado = true;
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
}
else
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha intentado prescribir dos veces un acto autoprescribible");
if(perfil.equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA))
sesion.setAttribute("VUELTA_DENTAL", "No puede imputar el acto");
sesion.setAttribute("ERROR", "No puede imputar el acto "+perttactmed.obtenerNombreActo(actoErroneo, intEspecialidad).trim()+", por que ya se le ha imputado hoy.");
}
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
//throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
//throw new ExcepcionTarisan(ex.getMessage());
}
return resultado;
}
/**
* Se actualizan las tablas TAMOVEXT y TARESANA para grabar la aceptación del análisis prescrito.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
*/
private int aceptarAnalisisPrescrito(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
try
{
PersistenciaTamovext perTamovext = new PersistenciaTamovext();
PersistenciaTaresana perTaresana = new PersistenciaTaresana();
PersistenciaTtactmed perttactmed = new PersistenciaTtactmed();
PersistenciaTapresca pertapresca_tarisan = new PersistenciaTapresca();
PersistenciaTamedico perTamedico = new PersistenciaTamedico();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
PersistenciaTapecap perTapecap = new PersistenciaTapecap();
PersistenciaTabenefi perTaben = new PersistenciaTabenefi();
//obtenemos los datos del medico y del paciente
int intTarifa = ((Usuario)sesion.getAttribute("USUARIO")).getTarifa();
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
int intEspecialidad = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad();
int intEntidad = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadIMQ();
long longColectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
double dblPoliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
String strEmbosado = ((Paciente)sesion.getAttribute("PACIENTE")).getIdentificador();
if (strEmbosado == null)
strEmbosado = "";
int intBeneficiario = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
long longAutorizacion = Long.parseLong( (String)request.getParameter("autorizacion") );
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
String tarjetaChipcard = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjetaDesplazado();
if (tarjetaChipcard == null)
tarjetaChipcard = "";
/*String [] arrayLetras = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "Ñ", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"};
String letra="";
String strNumero = "";
String strCodigo="";*/
//obtenemos el ultimo valor del campo numseq de la tabla tamovext.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
//int intUltimoValorNumSeq = perTamovext.obtenerUltimoValorNumSeq(intMedico);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
try
{
strSql = new StringBuffer();
strSql.append("INSERT INTO TAMOVEXT");
//strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, NUMSEQ, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
//quito el campo numseq por que hacemos un autoincrement en el oracle
strSql.append(" (MEDICO, ESPECIALIDAD, ACTO, COLECTIVO, POLIZA, ORDEN, FECHA, PRECIO, PRESCRIPTOR, ENTIDAD, TARJETA_CHIPCARD, AUTORIZACION, ESPECIALIDAD_CHIPCARD, ACTO_CHIPCARD)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
//inicializamos el array con los valores fijos
aValores = new Object[14];
aValores[0] = Integer.valueOf(intMedico);
aValores[1] = Integer.valueOf(intEspecialidad);
aValores[3] = Long.valueOf(longColectivo);
aValores[4] = Double.valueOf(dblPoliza);
aValores[5] = Integer.valueOf(intBeneficiario);
aValores[6] = dtFecha;
Tamedico taprescriptor = perTamedico.obtenerMedicoPrescripcionAnalisis(longAutorizacion, longColectivo, dblPoliza, intBeneficiario);
aValores[8] = Integer.valueOf(taprescriptor.getMedico());
aValores[9] = Integer.valueOf(intEntidad);
aValores[10] = new String(tarjetaChipcard);
aValores[11] = Long.valueOf(longAutorizacion);
aValores[12] = Integer.valueOf(intEspecialidad);
int intCodActo=0;
LogTarisan.logger.log(NivelLog.DEBUG, "Forzar un commit");
Vector vAnalisis = pertapresca_tarisan.obtenerActosPrescripcionAnalisis(longAutorizacion, longColectivo, dblPoliza, intBeneficiario, 0);
Tapresca tapresca_tarisan = null;
for(int i = 0; i < vAnalisis.size(); i++)
{
//obtenemos los valores especificos para cada acto medico
tapresca_tarisan = (Tapresca)vAnalisis.elementAt(i);
intCodActo = tapresca_tarisan.getActo();
double precio = perttactmed.obtenerPrecioActoMedico(intTarifa, intCodActo, intEspecialidad);
aValores[2] = Integer.valueOf(intCodActo);
aValores[13] = Integer.valueOf(intCodActo);
//aValores[3] = Integer.valueOf(intUltimoValorNumSeq + 1);
aValores[7] = Double.valueOf( precio );
if (precio == -1){
//No se ha encontrado el precio del acto. Salimos
return 2;//Saco mensaje de que no hay precio
}
//intUltimoValorNumSeq++;
//insertamos el registro
//perTamovext.insertarMovimiento(strSql.toString(), aValores, conexion);
perTamovext.insertarTamovext(aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMOVEXT", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//introducimos un nuevo registro en la tabla taresana
strSql = new StringBuffer();
strSql.append("INSERT INTO TARESANA");
strSql.append(" (PRESCRIPTOR, ESPECIALIDAD, COLEC, POLIZA, ORDEN, FECHA, AUTORIZACION, LABORATORIO)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
//cargamos el array
aValores = new Object[8];
aValores[0] = Integer.valueOf(taprescriptor.getMedico());
aValores[1] = Integer.valueOf(intEspecialidad);
aValores[2] = Long.valueOf(longColectivo);
aValores[3] = Double.valueOf(dblPoliza);
aValores[4] = Integer.valueOf(intBeneficiario);
aValores[5] = dtFecha;
aValores[6] = Long.valueOf(longAutorizacion);
aValores[7] = Integer.valueOf(intMedico);
perTaresana.insertarAnalisis(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TARESANA", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
//introducimos un nuevo registro en la tabla tapecap
String consulta = "";
aValores = new Object[0];
strSql = new StringBuffer();
strSql.append("INSERT INTO TAPECAP");
strSql.append(" (TAPECAP_PK, CODIGO, FECHA, APELLIDOS, NOMBRE, NIF, DIRECCION, FECHA_NAC, TELEFONO, COMPAÑIA, IDENTIFICADOR, MEDICO, AUTORIZACION, PRESCRIPTOR, ESPECIALIDAD, POLIZA, COLECTIVO, ORDEN)");
strSql.append(" SELECT TAPECAP_PK_SEQ.NEXTVAL, ?, TO_DATE('?','dd/mm/yyyy'), ?, ?, ?, ?, TO_DATE('?','dd/mm/yyyy'), ?, ?, ?, ?, ?, ?, ?, ?, ?, ? FROM DUAL");
PersistenciaTamedico perTame = new PersistenciaTamedico();
Tamedico tamedico = new Tamedico();
tamedico = perTame.seleccionar(taprescriptor.getMedico());
PersistenciaTaespeci perTaespeci = new PersistenciaTaespeci();
String descripEspe = "";
descripEspe = perTaespeci.obtenerDescripcionEspecialidad(tamedico.getEspecialidad());
int intUltimoValorCodigo = perTapecap.obtenerUltimoCodigo(intMedico);
//cargamos el array
Vector vDatosPaciente = new Vector();
vDatosPaciente = perTapecap.obtenerDetallePaciente(longColectivo, dblPoliza, intBeneficiario);
if (vDatosPaciente.isEmpty()){
//obtenemos el ultimo valor del campo codigo de la tabla tapecap.
//Este campo es un numero correlativo utilizado para diferenciar las peticiones capturadas por medico y dia.
/*if (perTapecap.existePaciente(intMedico, strEmbosado)){
int num = 0;
strCodigo = perTapecap.obtenerUltimoCodigoMismoPaciente(intMedico,strEmbosado);
letra = strCodigo.substring(0, 1);
strNumero = strCodigo.substring(1);
num = Integer.parseInt(strNumero) + 1;
strCodigo = letra + num;
}else{
strCodigo = perTapecap.obtenerUltimoCodigo(intMedico);
if (strCodigo.compareTo("")==0 ){
strCodigo = "A1";
}else{
letra = strCodigo.substring(0, 1);
int pos = 0;
for (int i=0; i < arrayLetras.length; i ++){
if (letra.compareTo(arrayLetras[i])==0 ){
pos = i + 1;
}
}
letra = arrayLetras[pos];
strNumero = "1";
strCodigo = letra + strNumero;
}
}*/
String fecha = dtFecha.toString().substring(8)+"/"+dtFecha.toString().substring(5, 7)+"/"+dtFecha.toString().substring(0, 4);
consulta = "INSERT INTO TAPECAP (TAPECAP_PK, CODIGO, FECHA, APELLIDOS, NOMBRE, NIF, DIRECCION, FECHA_NAC, TELEFONO, COMPAÑIA, IDENTIFICADOR, MEDICO, AUTORIZACION, PRESCRIPTOR, ESPECIALIDAD, POLIZA, COLECTIVO, ORDEN) SELECT TAPECAP_PK_SEQ.NEXTVAL, '"+ intUltimoValorCodigo +"', TO_DATE('"+fecha+"','dd/mm/yyyy'), '', '', '', '', '', '', '', '"+ strEmbosado +"', "+ intMedico +", "+ longAutorizacion +", '"+ tamedico.getApellidos().trim() +"', '"+ descripEspe.trim() +"', -1, -1, -1 FROM DUAL";
//consulta = "INSERT INTO TAPECAP (TAPECAP_PK, CODIGO, FECHA, APELLIDOS, NOMBRE, NIF, DIRECCION, FECHA_NAC, TELEFONO, COMPAÑIA, IDENTIFICADOR, MEDICO, AUTORIZACION, PRESCRIPTOR, ESPECIALIDAD, POLIZA, COLECTIVO, ORDEN) SELECT TAPECAP_PK_SEQ.NEXTVAL, '"+ intUltimoValorCodigo +"', TO_DATE('"+ (String)Utilidades.formatear_fecha(dtFecha) +"','dd/mm/yyyy'), '', '', '', '', '', '', '', '"+ strEmbosado +"', "+ intMedico +", "+ longAutorizacion +", '"+ tamedico.getApellidos().trim() +"', '"+ descripEspe.trim() +"', -1, -1, -1 FROM DUAL";
}else{
//Sacamos el troquelado de la tarjeta (que es lo que en GINFER llaman póliza)
String troque = "";
troque = perTaben.obtenerIdentificador(longColectivo, dblPoliza, intBeneficiario);
//troque.trim();
String embo = "";
if (strEmbosado.compareTo("")!=0){ //Si está el troquelado en sesion lo cogemos
embo = strEmbosado;
}else{ //Si no esta en sesión, lo cogemos de ttbenefi
if(troque.compareTo("")!=0 || troque!=""){
embo = troque;
}else{
long tj = 0;
tj = perTaben.obtenerTarjeta(longColectivo, dblPoliza, intBeneficiario);
embo = ""+tj;
}
}
//obtenemos el ultimo valor del campo codigo de la tabla tapecap.
//Este campo es un numero correlativo utilizado para diferenciar las peticiones capturadas por medico y dia.
/*if (perTapecap.existePaciente(intMedico, embo)){
int num = 0;
strCodigo = perTapecap.obtenerUltimoCodigoMismoPaciente(intMedico,embo);
letra = strCodigo.substring(0, 1);
strNumero = strCodigo.substring(1);
num = Integer.parseInt(strNumero) + 1;
strCodigo = letra + num;
}else{
strCodigo = perTapecap.obtenerUltimoCodigo(intMedico);
if (strCodigo.compareTo("")==0 ){
strCodigo = "A1";
}else{
letra = strCodigo.substring(0, 1);
int pos = 0;
for (int i=0; i < arrayLetras.length; i ++){
if (letra.compareTo(arrayLetras[i])==0 ){
pos = i + 1;
}
}
letra = arrayLetras[pos];
strNumero = "1";
strCodigo = letra + strNumero;
}
}*/
String compa = "";
if (((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_propios)==0){
compa = "IMQ";
}else if (((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_adeslas)==0){
compa = "ADESLAS DESPLAZADO";
}else if (((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_dkv)==0){
compa = "DKV DESPLAZADO";
}else if (((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_sanitas)==0){
compa = "SANITAS DESPLAZADO";
}else if (((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_hna)==0){
compa = "HNA DESPLAZADO";
}else if (((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_imqbilbo)==0){
compa = "IMQ-BILBO DESPLAZADO";
}else if (((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_redsa_asisa)==0){
compa = "ASISA DESPLAZADO";
}
String fecha = dtFecha.toString().substring(8)+"/"+dtFecha.toString().substring(5, 7)+"/"+dtFecha.toString().substring(0, 4);
consulta = "INSERT INTO TAPECAP (TAPECAP_PK, CODIGO, FECHA, APELLIDOS, NOMBRE, NIF, DIRECCION, FECHA_NAC, TELEFONO, COMPAÑIA, IDENTIFICADOR, MEDICO, AUTORIZACION, PRESCRIPTOR, ESPECIALIDAD, POLIZA, COLECTIVO, ORDEN) SELECT TAPECAP_PK_SEQ.NEXTVAL, '"+ intUltimoValorCodigo +"', TO_DATE('"+fecha+"','dd/mm/yyyy'), '"+ (String)vDatosPaciente.elementAt(0) +"', '"+ (String)vDatosPaciente.elementAt(1) +"', '"+ (String)vDatosPaciente.elementAt(2) +"', '"+ (String)vDatosPaciente.elementAt(3) +"', '"+ (String)vDatosPaciente.elementAt(4) +"', '"+ (String)vDatosPaciente.elementAt(5) +"', '"+ compa +"', '"+ embo +"', "+ intMedico +", "+ longAutorizacion +", '"+ tamedico.getApellidos().trim() +"', '"+ descripEspe.trim() +"', "+ dblPoliza +", "+ longColectivo +", "+ intBeneficiario +" FROM DUAL";
// jjj fuerza el cambio y que compile
}
//perTapecap.insertarPeticionCapturada(strSql.toString(), aValores, conexion);
perTapecap.insertarPeticionCapturada(consulta, aValores, conexion);
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAPECAP", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
return 1;//Saco mensaje de "peticion adjudicada correctamente"
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
}
/**
* Introduce en la tabla tapresca_tarisan la prescripción a otro médico especialista.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
*/
private void prescripcionEspecialidades(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
try
{
PersistenciaTapresca pertapresca_tarisan = new PersistenciaTapresca();
PersistenciaTamedico perTamedico = new PersistenciaTamedico();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
//obtenemos los datos del medico y del paciente
Paciente pac = (Paciente)sesion.getAttribute("PACIENTE");
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long intColectivo = pac.getTarjeta().getColectivo();
double dblPoliza = pac.getTarjeta().getPoliza();
int intOrden = pac.getTarjeta().getBeneficiario();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
String modifiAuto = (String)request.getParameter("modifiAuto");
String codigoEspecialidad = (String)request.getParameter("listaCodigoElementosPrescripcion");
//obtenemos el valor del campo param1 del medico conectado
//este valor se utiliza para calcular el numero de autorizacion para la prescripcion a realizar
int intParam1=perTamedico.obtenerValorParam1(intMedico);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
//calculamos el numero de autorizacion para la prescripcion a realizar
long longAutorizacion = this.calcularCodigoAutorizacion(intMedico, intParam1);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
try
{
//Miramos si se trata de una modificación de la petición
if (modifiAuto.compareTo("")!=0 && (pertapresca_tarisan.existePeticion(Long.parseLong(modifiAuto)) && codigoEspecialidad.length()>0)){
//Eliminamos la analítica
strSql = new StringBuffer();
strSql.append("delete from tapresca_tarisan");
strSql.append(" where AUTORIZACION = ?");
aCondiciones= new Object[1];
aCondiciones[0] = Long.parseLong(modifiAuto);
//LogTarisan.logger.log(NivelLog.DEBUG, "Eliminamos la analitica: "+Utilidades.obtenerSentenciaSQL(strSql, aCondiciones, null));
boolean resultadoAnaliticaEliminada = pertapresca_tarisan.eliminarPrescripcion(strSql.toString(), aCondiciones, conexion);
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
aValores = new Object[13];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
aValores[4] = Long.valueOf(modifiAuto);
aValores[6] = Integer.valueOf(0); //el acto medico lo metemos por defecto a '0'. No tiene sentido en este caso el acto medico, ya que tratamos especialidades.
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = ""; //dejamos vacio este campo
aValores[10] = ""; //dejamos vacio el campo texto
aValores[12] = 6; //TIPO_PETICION = ESPECIALIDAD
//aValores[11] = pac.getTarjeta().getTarjetaDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0 ? Integer.valueOf(pac.getTarjeta().getTarjeta()) : new String(pac.getTarjeta().getTarjetaDesplazado());
if (pac.getTarjeta().getTarjetaDesplazado()!=null){
if (pac.getTarjeta().getTarjetaDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0){
aValores[11] = Integer.valueOf(pac.getTarjeta().getTarjeta());
}else{
aValores[11] = new String(pac.getTarjeta().getTarjetaDesplazado());
}
}else{
aValores[11] = "";
}
/*String valo = (String)request.getParameter("listaCodigoElementosPrescripcion");
/* poner en listaCodigoElementosPrescripcion un ¬ si no lo tiene
if (((String)request.getParameter("listaCodigoElementosPrescripcion")).indexOf("¬")==-1){
request.setAttribute("listaCodigoElementosPrescripcion", (String)request.getParameter("listaCodigoElementosPrescripcion")+"¬");
}*/
//recorremos las especialidades prescritas y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
StringTokenizer st = new StringTokenizer(codigoEspecialidad, "¬");
while (st.hasMoreTokens())
{
aValores[5] = Integer.valueOf( Integer.parseInt( st.nextToken() ) );
//actualizamos las prescripciones
LogTarisan.logger.log(NivelLog.DEBUG, Utilidades.obtenerSentenciaSQL(strSql, aValores, null));
pertapresca_tarisan.insertarPrescripcion(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "tapresca_tarisan", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el valor del campo param1
/*strSql = new StringBuffer();
strSql.append("UPDATE TAMEDICO");
strSql.append(" SET PARAM1=?");
strSql.append(" WHERE MEDICO=?");
aValores = new Object[1];
aValores[0] = Integer.valueOf(intParam1 + 1);
aCondiciones = new Object[1];
aCondiciones[0] = Integer.valueOf(intMedico);
perTamedico.modificarMedico(strSql.toString(), aValores, aCondiciones, conexion);*/
//metemos el codigo de autorizacon obtenido en la request para poder utilizarlo en la impresion
request.setAttribute("autorizacion", String.valueOf(modifiAuto));
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
}else{
//Creamos la sentencia insert
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
//cargamos el array de valores con los datos fijos
aValores = new Object[13];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
aValores[4] = Long.valueOf(longAutorizacion);
aValores[6] = Integer.valueOf(0); //el acto medico lo metemos por defecto a '0'. No tiene sentido en este caso el acto medico, ya que tratamos especialidades.
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = ""; //dejamos vacio este campo
aValores[10] = ""; //dejamos vacio el campo texto
aValores[12] = 6; //TIPO_PETICION = ESPECIALIDAD
//aValores[11] = pac.getTarjeta().getTarjetaDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0 ? Integer.valueOf(pac.getTarjeta().getTarjeta()) : new String(pac.getTarjeta().getTarjetaDesplazado());
if (pac.getTarjeta().getTarjetaDesplazado()!=null){
if (pac.getTarjeta().getTarjetaDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0){
aValores[11] = Integer.valueOf(pac.getTarjeta().getTarjeta());
}else{
aValores[11] = new String(pac.getTarjeta().getTarjetaDesplazado());
}
}else{
aValores[11] = "";
}
//recorremos las especialidades prescritas y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
StringTokenizer st = new StringTokenizer((String)request.getParameter("listaCodigoElementosPrescripcion"), "¬");
while (st.hasMoreTokens())
{
aValores[5] = Integer.valueOf( Integer.parseInt( st.nextToken() ) );
//actualizamos las prescripciones
pertapresca_tarisan.insertarPrescripcion(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "tapresca_tarisan", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el valor del campo param1
strSql = new StringBuffer();
strSql.append("UPDATE TAMEDICO");
strSql.append(" SET PARAM1=?");
strSql.append(" WHERE MEDICO=?");
aValores = new Object[1];
aValores[0] = Integer.valueOf(intParam1 + 1);
aCondiciones = new Object[1];
aCondiciones[0] = Integer.valueOf(intMedico);
perTamedico.modificarMedico(strSql.toString(), aValores, aCondiciones, conexion);
//metemos el codigo de autorizacon obtenido en la request para poder utilizarlo en la impresion
request.setAttribute("autorizacion", String.valueOf(longAutorizacion));
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
}
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
}
/**
* Introduce en la tabla tapresca_tarisan la prescripción del diagnóstico.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
*/
private void prescripcionRadiodiagnosticos(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
try
{
PersistenciaTapresca pertapresca_tarisan = new PersistenciaTapresca();
PersistenciaTamedico perTamedico = new PersistenciaTamedico();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
//obtenemos los datos del medico y del paciente
Paciente pac = (Paciente)sesion.getAttribute("PACIENTE");
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long intColectivo = pac.getTarjeta().getColectivo();
double dblPoliza = pac.getTarjeta().getPoliza();
int intOrden = pac.getTarjeta().getBeneficiario();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
//obtenemos el valor del campo param1 del medico conectado
//este valor se utiliza para calcular el numero de autorizacion para la prescripcion a realizar
int intParam1=perTamedico.obtenerValorParam1(intMedico);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
//calculamos el numero de autorizacion para la prescripcion a realizar
long longAutorizacion = this.calcularCodigoAutorizacion(intMedico, intParam1);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
try
{
//Creamos la sentencia insert
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
//cargamos el array de valores con los datos fijos
aValores = new Object[13];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
aValores[4] = Long.valueOf(longAutorizacion);
aValores[5] = Integer.valueOf(ParametrosConfiguracion.radiodiagnostico);
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = ""; //dejamos vacio este campo
aValores[10] = ""; //dejamos vacio este campo
aValores[12] = 3; //TIPO_PETICION = RADIOdiagnósticO
aValores[11] = pac.getDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0 ? Integer.valueOf(pac.getTarjeta().getTarjeta()) : new String(pac.getTarjeta().getTarjetaDesplazado());
//recorremos los actos prescritos y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
StringTokenizer st = new StringTokenizer((String)request.getParameter("listaCodigoElementosPrescripcion"), "¬");
while (st.hasMoreTokens())
{
aValores[6] = Integer.valueOf( Integer.parseInt( st.nextToken() ) );
//actualizamos las prescripciones
pertapresca_tarisan.insertarPrescripcion(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "tapresca_tarisan", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el valor del campo param1
strSql = new StringBuffer();
strSql.append("UPDATE TAMEDICO");
strSql.append(" SET PARAM1=?");
strSql.append(" WHERE MEDICO=?");
aValores = new Object[1];
aValores[0] = Integer.valueOf(intParam1 + 1);
aCondiciones = new Object[1];
aCondiciones[0] = Integer.valueOf(intMedico);
perTamedico.modificarMedico(strSql.toString(), aValores, aCondiciones, conexion);
//metemos el codigo de autorizacon obtenido en la request para poder utilizarlo en la impresion
request.setAttribute("autorizacion", String.valueOf(longAutorizacion));
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
}
/**
* Introduce en la tabla tapresca_tarisan la prescripción de la analítica.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
*/
private boolean prescripcionAnaliticas(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
LogTarisan.logger.log(NivelLog.DEBUG, "prescripcion Analiticas y Anatomía Patológica - Entramos");
boolean result = false;
try
{
PersistenciaTapresca pertapresca_tarisan = new PersistenciaTapresca();
PersistenciaTamedico perTamedico = new PersistenciaTamedico();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
//obtenemos los datos del medico y del paciente
Paciente pac = (Paciente)sesion.getAttribute("PACIENTE");
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long intColectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
double dblPoliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
int intOrden = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
String modifiAuto = (String)request.getParameter("modifiAuto");
int esp = Integer.valueOf(ParametrosConfiguracion.analiticas);
int tipo_peticion = 0;
String tipo = "";
if (request.getParameter("anato")!=null){
esp = 5;
LogTarisan.logger.log(NivelLog.DEBUG, "Anatomía Patológica");
tipo = "anatomía patológica";
tipo_peticion = 2;
}else{
LogTarisan.logger.log(NivelLog.DEBUG, "Analitica");
tipo = "analítica";
tipo_peticion = 1;
}
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
//obtenemos el valor del campo param1 del medico conectado
//este valor se utiliza para calcular el numero de autorizacion para la prescripcion a realizar
int intParam1=perTamedico.obtenerValorParam1(intMedico);
//calculamos el numero de autorizacion para la prescripcion a realizar
long longAutorizacion = this.calcularCodigoAutorizacion(intMedico, intParam1);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
try
{
if (modifiAuto.compareTo("")!=0 && (pertapresca_tarisan.existePeticion(Long.parseLong(modifiAuto)))){
//Eliminamos la analítica
strSql = new StringBuffer();
strSql.append("delete from tapresca_tarisan");
strSql.append(" where AUTORIZACION = ?");
aCondiciones= new Object[1];
aCondiciones[0] = Long.parseLong(modifiAuto);
//LogTarisan.logger.log(NivelLog.DEBUG, "Eliminamos la analitica: "+Utilidades.obtenerSentenciaSQL(strSql, aCondiciones, null));
boolean resultadoAnaliticaEliminada = pertapresca_tarisan.eliminarPrescripcion(strSql.toString(), aCondiciones, conexion);
//insertamos una nueva
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, JUSTIFY_DETER, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
//cargamos el array de valores con los datos fijos
aValores = new Object[14];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
/*aValores[4] = Long.valueOf(longAutorizacion); */
aValores[4] = Long.valueOf(modifiAuto);
aValores[5] = esp;
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = ""; //dejamos vacio este campo
aValores[10] = (String)request.getParameter("justificacionPrescripcion");
aValores[13] = tipo_peticion; //TIPO_PETICION = ANALÍTICA O ANATOMIA
if(pac.getDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
aValores[11] = pac.getTarjeta().getTarjeta();
else
aValores[11] = pac.getTarjeta().getTarjetaDesplazado();
//recorremos los actos prescritos y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
StringTokenizer st = new StringTokenizer((String)request.getParameter("listaCodigoElementosPrescripcion"), "¬");
StringTokenizer st2 = new StringTokenizer((String)request.getParameter("listaElementosPrescripcion"), "¬");
while (st.hasMoreTokens())
{
int acto =Integer.parseInt( st.nextToken() );
String justify_acto = st2.nextToken();
aValores[6] = Integer.valueOf( acto );
if (justify_acto.indexOf("¬")==-1){
aValores[12] = new String("");
}else{
aValores[12] = new String(justify_acto.substring(justify_acto.indexOf(" ¬ ")+3));
}
//actualizamos las prescripciones
LogTarisan.logger.log(NivelLog.DEBUG, "Insertamos la "+tipo+": "+Utilidades.obtenerSentenciaSQL(strSql, aValores, null));
boolean resultado = pertapresca_tarisan.insertarPrescripcion(strSql.toString(), aValores, conexion);
if(!resultado || !resultadoAnaliticaEliminada)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: Error al insertar la "+tipo+": "+(modifiAuto));
ExcepcionTarisan ex = new ExcepcionTarisan();
String sMensaje = "Se ha producido un error al guardar la "+tipo+".";
sesion.setAttribute("ERROR", sMensaje);
throw (ex);
}
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "tapresca_tarisan", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el numero de autorización rpovisional por el definitivo si ha sido una modificacion de la analítica
/*strSql = new StringBuffer();
strSql.append("UPDATE tapresca_tarisan");
strSql.append(" SET AUTORIZACION=?");
strSql.append(" WHERE AUTORIZACION=?");
aValores = new Object[1];
aValores[0] = Long.valueOf(Long.parseLong(modifiAuto));
aCondiciones = new Object[1];
aCondiciones[0] = Long.valueOf(longAutorizacion);
pertapresca_tarisan.modificarPrescripcion(strSql.toString(), aValores, aCondiciones, conexion);*/
}else{
//Creamos la sentencia insert
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, JUSTIFY_DETER, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
//cargamos el array de valores con los datos fijos
aValores = new Object[14];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
aValores[4] = Long.valueOf(longAutorizacion);
aValores[5] = esp;
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = ""; //dejamos vacio este campo
aValores[10] = (String)request.getParameter("justificacionPrescripcion");
aValores[13] = tipo_peticion; //TIPO_PETICION = ANALÍTICA O ANATOMIA
if(pac.getDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
aValores[11] = pac.getTarjeta().getTarjeta();
else
aValores[11] = pac.getTarjeta().getTarjetaDesplazado();
//recorremos los actos prescritos y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
StringTokenizer st = new StringTokenizer((String)request.getParameter("listaCodigoElementosPrescripcion"), "¬");
StringTokenizer st2 = new StringTokenizer((String)request.getParameter("listaElementosPrescripcion"), "¬");
while (st.hasMoreTokens())
{
int acto =Integer.parseInt( st.nextToken() );
String justify_acto = st2.nextToken();
/*
* int intContratonew = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getContrato();
* Persistenciattactmed perttactmed = new Persistenciattactmed();
* String descripcion = perttactmed.obtenerNombreActo(acto, ParametrosConfiguracion.analiticas);
* Vector vSeleccion = perttactmed.obtenerActosPorEspecialidad(1, ParametrosConfiguracion.analiticas,intContratonew,intColectivo,dblPoliza, descripcion);
//for(i=0;i0)
{
result = true;
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha insertado bien la peticion: "+aut);
}
}
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
LogTarisan.logger.log(NivelLog.DEBUG, "prescripcionAnaliticas - Conexion liberada");
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
LogTarisan.logger.log(NivelLog.DEBUG, "prescripcion Analitica y Anatomía Patológica- Finalizada");
return result;
}
private boolean prescripcionDiagnosticos(HttpServletRequest request, HttpServletResponse response, HttpSession sesion, boolean justificacionNiveles) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
LogTarisan.logger.log(NivelLog.DEBUG, "prescripcionDiagnosticos - Entramos");
boolean result = false;
try
{
PersistenciaTapresca pertapresca_tarisan = new PersistenciaTapresca();
PersistenciaTamedico perTamedico = new PersistenciaTamedico();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
//obtenemos los datos del medico y del paciente
Paciente pac = (Paciente)sesion.getAttribute("PACIENTE");
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long intColectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
double dblPoliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
int intOrden = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
//obtenemos el valor del campo param1 del medico conectado
//este valor se utiliza para calcular el numero de autorizacion para la prescripcion a realizar
int intParam1=perTamedico.obtenerValorParam1(intMedico);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
//calculamos el numero de autorizacion para la prescripcion a realizar
long longAutorizacion = this.calcularCodigoAutorizacion(intMedico, intParam1);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
try
{
//Creamos la sentencia insert
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, JUSTIFY_DETER, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
//cargamos el array de valores con los datos fijos
aValores = new Object[14];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
aValores[4] = Long.valueOf(longAutorizacion);
aValores[5] = Integer.valueOf(ParametrosConfiguracion.radiodiagnostico);
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = ""; //dejamos vacio este campo
aValores[13] = 3; //TIPO_PETICION = RADIOdiagnósticO
if (justificacionNiveles){
aValores[10] = (String)request.getParameter("justificacionPrescripcion");
}else{
aValores[10] ="";
}
//aValores[10] = (String)request.getParameter("justificacionPrescripcion");
if(pac.getDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
aValores[11] = pac.getTarjeta().getTarjeta();
else
aValores[11] = pac.getTarjeta().getTarjetaDesplazado();
//recorremos los actos prescritos y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
StringTokenizer st = new StringTokenizer((String)request.getParameter("listaCodigoElementosPrescripcion"), "¬");
StringTokenizer st2 = new StringTokenizer((String)request.getParameter("listaElementosPrescripcion"), "¬");
while (st.hasMoreTokens())
{
int acto =Integer.parseInt( st.nextToken() );
String justify_acto = st2.nextToken();
/*
* int intContratonew = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getContrato();
* Persistenciattactmed perttactmed = new Persistenciattactmed();
* String descripcion = perttactmed.obtenerNombreActo(acto, ParametrosConfiguracion.analiticas);
* Vector vSeleccion = perttactmed.obtenerActosPorEspecialidad(1, ParametrosConfiguracion.analiticas,intContratonew,intColectivo,dblPoliza, descripcion);
//for(i=0;i0)
{
result = true;
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha insertado bien la peticion: "+longAutorizacion);
}
}
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
LogTarisan.logger.log(NivelLog.DEBUG, "prescripcionDiagnosticos - Conexion liberada");
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
LogTarisan.logger.log(NivelLog.DEBUG, "prescripcionDiagnosticos - Finalizada");
return result;
}
/**
* Introduce en la tabla tapresca_tarisan la petición de autorización.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
*/
private void peticionAutorizacion(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql;
try
{
PersistenciaTapresca pertapresca_tarisan = new PersistenciaTapresca();
PersistenciaTamedico perTamedico = new PersistenciaTamedico();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
//obtenemos los datos del medico y del paciente
Paciente pac = (Paciente)sesion.getAttribute("PACIENTE");
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
int intEspecialidad = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad();
long intColectivo = pac.getTarjeta().getColectivo();
int intBeneficiario = pac.getTarjeta().getBeneficiario();
String modifiAuto = (String)request.getParameter("modifiAuto");
double dblPoliza = pac.getTarjeta().getPoliza();
int intOrden = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
//obtenemos el valor del campo param1 del medico conectado
//este valor se utiliza para calcular el numero de autorizacion para la prescripcion a realizar
int intParam1=perTamedico.obtenerValorParam1(intMedico);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso);
//calculamos el numero de autorizacion para la prescripcion a realizar
long longAutorizacion = this.calcularCodigoAutorizacion(intMedico, intParam1);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
try
{
//Miramos si se trata de una modificación de la petición
if (modifiAuto.compareTo("")!=0 && (pertapresca_tarisan.existePeticion(Long.parseLong(modifiAuto)) && request.getParameter("listaCodigoElementosPrescripcion").length()>0)){
//Eliminamos la analítica
strSql = new StringBuffer();
strSql.append("delete from tapresca_tarisan");
strSql.append(" where AUTORIZACION = ?");
aCondiciones= new Object[1];
aCondiciones[0] = Long.parseLong(modifiAuto);
//LogTarisan.logger.log(NivelLog.DEBUG, "Eliminamos la analitica: "+Utilidades.obtenerSentenciaSQL(strSql, aCondiciones, null));
boolean resultadoAnaliticaEliminada = pertapresca_tarisan.eliminarPrescripcion(strSql.toString(), aCondiciones, conexion);
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
//cargamos el array de valores con los datos fijos
aValores = new Object[13];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
aValores[4] = Long.valueOf(modifiAuto);
aValores[5] = Integer.valueOf(intEspecialidad);
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = (String)request.getParameter("centroPrescripcion");
aValores[10] = ""; //dejamos vacio el campo texto
aValores[12] = 5; //TIPO_PETICION = AUTORIZACION
if(pac.getDesplazado() == null)
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_propios);
if(pac.getDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
{
aValores[11] = Integer.valueOf(pac.getTarjeta().getTarjeta());
}
else
{
aValores[11] = new String(pac.getTarjeta().getTarjetaDesplazado());
}
//recorremos los actos prescritos y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
StringTokenizer st = new StringTokenizer((String)request.getParameter("listaCodigoElementosPrescripcion"), "¬");
while (st.hasMoreTokens())
{
aValores[6] = Integer.valueOf( Integer.parseInt( st.nextToken() ) );
//actualizamos las prescriciones
pertapresca_tarisan.insertarPrescripcion(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "tapresca_tarisan", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el valor del campo param1
strSql = new StringBuffer();
strSql.append("UPDATE TAMEDICO");
strSql.append(" SET PARAM1=?");
strSql.append(" WHERE MEDICO=?");
aValores = new Object[1];
aValores[0] = Integer.valueOf(intParam1 + 1);
aCondiciones = new Object[1];
aCondiciones[0] = Integer.valueOf(intMedico);
perTamedico.modificarMedico(strSql.toString(), aValores, aCondiciones, conexion);
//actualizamos el valor de la primera visita en caso de que sea necesario
if ( ((String)request.getParameter("listaCodigoElementosPrescripcion")).indexOf("¬" + ParametrosConfiguracion.codigoPrimeraVisita + "¬") != -1 ) //se ha seleccionado el acto medico PRIMERA VISITA
{
int intCodActo=1;
actualizarPrimeraVisita(intMedico, intColectivo, dblPoliza, intBeneficiario, intCodActo, conexion);
}
//metemos el codigo de autorizacon obtenido en la request para poder utilizarlo en la impresion
request.setAttribute("autorizacion", String.valueOf(modifiAuto));
//metemos el centro en la request para poder utilizarlo en la impresion
PersistenciaTacentro perTacentro= new PersistenciaTacentro();
request.setAttribute("centroImpresion", perTacentro.obtenerCentro( (String)request.getParameter("centroPrescripcion") ).getDescripcion() );
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
}else{
//Creamos la sentencia insert
strSql = new StringBuffer();
strSql.append("INSERT INTO tapresca_tarisan");
strSql.append(" (COLEC, POLIZA, ORDEN, PRESCRIPTOR, AUTORIZACION, ESPECIALIDAD, ACTO, FECHA, TEXTO, CENTRO, JUSTIFICACION, TARJETA, TIPO_PETICION)");
strSql.append(" VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)");
//cargamos el array de valores con los datos fijos
aValores = new Object[13];
aValores[0] = Long.valueOf(intColectivo);
aValores[1] = Double.valueOf(dblPoliza);
aValores[2] = Integer.valueOf(intOrden);
aValores[3] = Integer.valueOf(intMedico);
aValores[4] = Long.valueOf(longAutorizacion);
aValores[5] = Integer.valueOf(intEspecialidad);
aValores[7] = dtFecha;
aValores[8] = (String)request.getParameter("informePrescripcion");
aValores[9] = (String)request.getParameter("centroPrescripcion");
aValores[10] = ""; //dejamos vacio el campo texto
aValores[12] = 5; //TIPO_PETICION = AUTORIZACION
if(pac.getDesplazado() == null)
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_propios);
if(pac.getDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
{
aValores[11] = Integer.valueOf(pac.getTarjeta().getTarjeta());
}
else
{
aValores[11] = new String(pac.getTarjeta().getTarjetaDesplazado());
}
//recorremos los actos prescritos y para cada una de ellas insertanos un nuevo registro en la tabla tapresca_tarisan
String cadena = (String)request.getParameter("listaCodigoElementosPrescripcion");
//Aparece una  que no he conseguid averiguar de donde sale...
String limpio = cadena.replaceAll("Â","");
StringTokenizer st = new StringTokenizer(limpio, "¬");
while (st.hasMoreTokens())
{
aValores[6] = Integer.valueOf( Integer.parseInt( st.nextToken() ) );
//actualizamos las prescriciones
pertapresca_tarisan.insertarPrescripcion(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "tapresca_tarisan", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
intUltimoValorCorrelativo++;
}
//actualizamos el valor del campo param1
strSql = new StringBuffer();
strSql.append("UPDATE TAMEDICO");
strSql.append(" SET PARAM1=?");
strSql.append(" WHERE MEDICO=?");
aValores = new Object[1];
aValores[0] = Integer.valueOf(intParam1 + 1);
aCondiciones = new Object[1];
aCondiciones[0] = Integer.valueOf(intMedico);
perTamedico.modificarMedico(strSql.toString(), aValores, aCondiciones, conexion);
LogTarisan.logger.log(NivelLog.DEBUG, "Llegamos a la 3977");
//actualizamos el valor de la primera visita en caso de que sea necesario
if ( ((String)request.getParameter("listaCodigoElementosPrescripcion")).indexOf("¬" + ParametrosConfiguracion.codigoPrimeraVisita + "¬") != -1 ) //se ha seleccionado el acto medico PRIMERA VISITA
{
int intCodActo=1;
actualizarPrimeraVisita(intMedico, intColectivo, dblPoliza, intBeneficiario, intCodActo, conexion);
}
//metemos el codigo de autorizacon obtenido en la request para poder utilizarlo en la impresion
request.setAttribute("autorizacion", String.valueOf(longAutorizacion));
//metemos el centro en la request para poder utilizarlo en la impresion
PersistenciaTacentro perTacentro= new PersistenciaTacentro();
request.setAttribute("centroImpresion", perTacentro.obtenerCentro( (String)request.getParameter("centroPrescripcion") ).getDescripcion() );
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
LogTarisan.logger.log(NivelLog.DEBUG, "Llegamos a la 3996");
}
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
}
/**
* Actualiza el historial del paciente con la información que el médico haya indicado.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
*/
private void actualizarHistoriaPaciente(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
Object[] aValores=null;
StringBuffer strSql;
try
{
PersistenciaTamovmpo perTamovmpo = new PersistenciaTamovmpo();
PersistenciaTareglog perTareglog = new PersistenciaTareglog();
//obtenemos los datos del medico y del paciente
int medico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long colectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
double poliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
int orden = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
//obtenemos el último valor del campo 'numero' para el medico conectado.
//este valor se utiliza para diferenciar registros de la tabla para el mismo médico y misma poliza
//a este numero se le sumara 1 para tener el valor del campo 'numero' a insertar
int intValorUltimoNumero=perTamovmpo.obtenerUltimoNumero(medico, colectivo, poliza, orden, fecha);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(medico, tsFechaUltimoAcceso);
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion);
try
{
//Introducimos el nuevo registro en el historial del paciente
strSql = new StringBuffer();
strSql.append("INSERT INTO TAMOVMPO");
strSql.append(" (MEDICO, COLEC, POLIZA, ORDEN, FECHA, NUMERO, TEXTO)");
strSql.append(" VALUES (?,?,?,?,?,?,?)");
aValores = new Object[7];
aValores[0] = Integer.valueOf(medico);
aValores[1] = Long.valueOf(colectivo);
aValores[2] = Double.valueOf(poliza);
aValores[3] = Integer.valueOf(orden);
aValores[4] = fecha;
aValores[5] = Integer.valueOf(intValorUltimoNumero + 1);
aValores[6] = (String)request.getParameter("texto");
//actualizamos el historial del paciente
perTamovmpo.insertarMovimiento(strSql.toString(), aValores, conexion);
//insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario
perTareglog.insertarLog(medico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMOVMPO", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion);
//las actualizaciones han ido bien. Confirmamos la transaccion
ParametrosConfiguracion.dataStore.confirmarTransaccion(conexion);
}
catch (ExcepcionTarisan ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch (Exception ex)
{
ParametrosConfiguracion.dataStore.deshacerTransaccion(conexion);
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex.getMessage());
throw new ExcepcionTarisan(ex.getMessage());
}
finally
{
//liberamos la conexion
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
}
/**
* Actualiza la fecha de la primera visita, o en caso de no existir primera visita, inserta un nuevo registro para la primera visita.
* @param medico Código del médico.
* @param colectivo Número de colectico.
* @param poliza Código de la póliza.
* @param beneficiario Número de beneficiario.
* @param conexion Conexion por la que se actualiza el valor de la primera visita.
*/
private void actualizarPrimeraVisita(int medico, long colectivo, double poliza, int beneficiario, int acto, Connection conexion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql = new StringBuffer();
try
{
PersistenciaTaprimer perTaprimer = new PersistenciaTaprimer();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
java.sql.Date dtFechaPrimeraVisita = perTaprimer.obtenerFechaPrimeraVisita(medico, colectivo, poliza, beneficiario);
if (dtFechaPrimeraVisita==null) //no existe el registro de primera visita. Se añade uno nuevo
{
//Añadimos un nuevo registro en la tabla de taprimer como primera visita
strSql = new StringBuffer();
strSql.append("INSERT INTO TAPRIMER");
//strSql.append(" (MEDICO, COLEC, POLIZA, ORDEN, FECHA)");
strSql.append(" (MEDICO, COLEC, POLIZA, ORDEN, FECHA, ACTO)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?)");
aValores = new Object[6];
aValores[0] = Integer.valueOf(medico);
aValores[1] = Long.valueOf(colectivo);
aValores[2] = Double.valueOf(poliza);
aValores[3] = Integer.valueOf(beneficiario);
aValores[4] = dtFecha;
aValores[5] = Integer.valueOf(acto);
perTaprimer.insertarPrimeraVisita(strSql.toString(), aValores, conexion);
}
else //existe el registro de la primera visita. Se actualiza el valor de la fecha.
{
strSql = new StringBuffer();
strSql.append("UPDATE TAPRIMER");
strSql.append(" SET FECHA=?");
strSql.append(" WHERE MEDICO=?");
strSql.append(" AND COLEC=?");
strSql.append(" AND POLIZA=?");
strSql.append(" AND ORDEN=?");
strSql.append(" AND FECHA=?");
strSql.append(" AND ACTO=?");
aValores = new Object[1];
aValores[0] = dtFecha;
aCondiciones = new Object[6];
aCondiciones[0] = Integer.valueOf(medico);
aCondiciones[1] = Long.valueOf(colectivo);
aCondiciones[2] = Double.valueOf(poliza);
aCondiciones[3] = Integer.valueOf(beneficiario);
aCondiciones[4] = dtFechaPrimeraVisita;
aCondiciones[5] = Integer.valueOf(acto);
perTaprimer.modificarPrimeraVisita(strSql.toString(), aValores, aCondiciones, conexion);
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
}
private void actualizarPrimeraLimpieza(int medico, long colectivo, double poliza, int beneficiario, int acto, Connection conexion) throws ExcepcionTarisan
{
Object[] aValores=null;
Object[] aCondiciones=null;
StringBuffer strSql = new StringBuffer();
try
{
PersistenciaTaprimer perTaprimer = new PersistenciaTaprimer();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
java.sql.Date dtFechaPrimeraLimpieza = perTaprimer.obtenerFechaPrimeraLimpieza(medico, colectivo, poliza, beneficiario);
if (dtFechaPrimeraLimpieza==null) //no existe el registro de primera limpieza. Se añade uno nuevo
{
//Añadimos un nuevo registro en la tabla de taprimer como primera limpieza
strSql = new StringBuffer();
strSql.append("INSERT INTO TAPRIMER");
strSql.append(" (MEDICO, COLEC, POLIZA, ORDEN, FECHA, ACTO)");
strSql.append(" VALUES (?, ?, ?, ?, ?, ?)");
aValores = new Object[6];
aValores[0] = Integer.valueOf(medico);
aValores[1] = Long.valueOf(colectivo);
aValores[2] = Double.valueOf(poliza);
aValores[3] = Integer.valueOf(beneficiario);
aValores[4] = dtFecha;
aValores[5] = Integer.valueOf(acto);
perTaprimer.insertarPrimeraLimpieza(strSql.toString(), aValores, conexion);
}
else //existe el registro de la primera limpieza. Se actualiza el valor de la fecha.
{
strSql = new StringBuffer();
strSql.append("UPDATE TAPRIMER");
strSql.append(" SET FECHA=?");
strSql.append(" WHERE MEDICO=?");
strSql.append(" AND COLEC=?");
strSql.append(" AND POLIZA=?");
strSql.append(" AND ORDEN=?");
strSql.append(" AND FECHA=?");
strSql.append(" AND ACTO=?");
aValores = new Object[1];
aValores[0] = dtFecha;
aCondiciones = new Object[6];
aCondiciones[0] = Integer.valueOf(medico);
aCondiciones[1] = Long.valueOf(colectivo);
aCondiciones[2] = Double.valueOf(poliza);
aCondiciones[3] = Integer.valueOf(beneficiario);
aCondiciones[4] = dtFechaPrimeraLimpieza;
aCondiciones[5] = Integer.valueOf(acto);
perTaprimer.modificarPrimeraLimpieza(strSql.toString(), aValores, aCondiciones, conexion);
}
}
catch (ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje());
throw (ExcepcionTarisan)ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex);
throw new ExcepcionTarisan(ex.getMessage());
}
}
/**
* Valida las pistas de la Tarjeta del Paciente.
* @param request Objeto HttpServletRequest enviado por el cliente.
* @param response Objeto HttpServletResponse que retornará la página al cliente.
* @param sesion Objeto HttpSession con la sesión actual del usuario.
* @return true o false en función de la validación de la tarjeta.
*/
private boolean validarTarjeta(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan
{
String valorTarjeta = request.getParameter("TARJETA");
String troquelado = request.getParameter("TROQUELADO");
String troqueladoSinTarjeta = request.getParameter("TROQUELADO_SIN_TARJETA");
/**
* Hacer que la lectura de tarjeta identifique si es nuestra o de chipcard
* B80343100000000000194706=RIPA PEREZ JOSE JAVIER ^001100000811 --> 68 caracteres
* %803431000000000001947068=001000010811 --> 38 caracteres
* %01999000001659559701===========================046531=================0019470683157150199900001659559701 --> 105 caracteres
*/
int medico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
boolean resul = false;
String sMensaje = "";
boolean pista3 = false;
try
{
if(troqueladoSinTarjeta != null){ /* SE HA METIDO EL TROQUELADO PORQUE HA FALLADO EL PASO DE TARJETA */
if(ParametrosConfiguracion.log_control_medicos == 1)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a controlar el troquelado de las tarjetas de cada medico");
PersistenciaControlMedicosTroquelado perConMedTro = new PersistenciaControlMedicosTroquelado();
if(perConMedTro.insertar(medico, troqueladoSinTarjeta))
LogTarisan.logger.log(NivelLog.DEBUG, "Insercion del registro de control correcta (troquelado)");
}
Tarjeta tarjeta = new Tarjeta();
LogTarisan.logger.log(NivelLog.DEBUG, "El número del troquelado de la tarjeta es: " + troqueladoSinTarjeta);
tarjeta = this.parsearTarjeta_troquelado(troqueladoSinTarjeta);
LogTarisan.logger.log(NivelLog.DEBUG, "Se han cargado los datos bien. tarjeta: "+tarjeta.getTarjeta()+", contrato: "+tarjeta.getContrato()+", colectivo: "+tarjeta.getColectivo()+", poliza: "+tarjeta.getPoliza()+", orden"+tarjeta.getBeneficiario()+", entidad_chipcard: "+tarjeta.getEntidadChipcard()+"...");
tratarEntidades("",tarjeta, 0, sMensaje, sesion, request, response, resul, medico);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else if(valorTarjeta != null)
{
if(ParametrosConfiguracion.log_control_medicos == 1)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a controlar las tarjetas de cada medico");
PersistenciaControlMedicos perConMed = new PersistenciaControlMedicos();
if(perConMed.insertar(medico, valorTarjeta))
LogTarisan.logger.log(NivelLog.DEBUG, "Insercion del registro de control correcta");
}
Tarjeta tarjeta = new Tarjeta();
int separador = 0;
separador = Utilidades.contar_coincidencias(valorTarjeta, "%");
PersistenciaTaDespla perTaDes = new PersistenciaTaDespla();
if(troquelado != null)
{
if(perTaDes.troquelado_repe(troquelado) || troquelado.length()<6)
{
LogTarisan.logger.log(NivelLog.ERROR, "El troquelado esta repetido...");
sMensaje = "Error, ha introducido un troquelado inválido, por favor introduce el troquelado de la tarjeta actual.";
sesion.setAttribute("ERROR", sMensaje);
try {
response.sendRedirect("../jsp/error.jsp" );
return false;
} catch (IOException e) {
LogTarisan.logger.log(NivelLog.ERROR, "El troquelado esta repetido..."+e.toString());
}
}
}
if(valorTarjeta.substring(1, 6).compareTo(ParametrosConfiguracion.bin_redsa_asisa) == 0)
{
tarjeta = this.parsearTarjeta_redsa(valorTarjeta);
LogTarisan.logger.log(NivelLog.DEBUG, "REDSA ASISA: \n1.- Datos conseguidos: \n"+"Paciente.tarjeta.entidad="+tarjeta.getEntidadIMQ()+"\n"+"Paciente.tarjeta.contrato="+tarjeta.getContrato()+"\n");
}
else if(valorTarjeta.length()>30 && valorTarjeta.length()<50)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Lectura de la pista 2");
tarjeta = this.parsearTarjeta_pista2(valorTarjeta);
//LogTarisan.logger.log(NivelLog.DEBUG, "Se ha cargado los datos bien. tarjeta: "+tarjeta.getTarjeta()+", contrato: "+tarjeta.getContrato()+", colectivo: "+tarjeta.getColectivo()+", poliza: "+tarjeta.getPoliza()+", orden"+tarjeta.getBeneficiario()+", entidad_chipcard: "+tarjeta.getEntidadChipcard()+"...");
}
else if (separador < 2)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Pistas: "+separador+"Lectura de la pista 3 - Médico: "+((Usuario)sesion.getAttribute("USUARIO")).getMedico());
sMensaje = "Está usando un lector mal configurado... Préximamente dejará de funcionar Póngase en contacto con el departamento de informática. Gracias.";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
if(valorTarjeta.charAt(46) == '=' && valorTarjeta.charAt(45) != '=')
{
LogTarisan.logger.log(NivelLog.DEBUG, "Lectura de tarjetas \"chungas\" de sanitas y derivados. Caracter42: "+valorTarjeta.charAt(42));
//la tarjeta puede estar de la 39 a la 45 si en la posición 42 no hay un =
if(valorTarjeta.charAt(42) == '=')
{
LogTarisan.logger.log(NivelLog.DEBUG, "El número de tarjeta es 33-8: "+valorTarjeta.substring(33, 41));
tarjeta = this.parsearTarjeta_troquelado(valorTarjeta.substring(33, 41));
}
else
{
LogTarisan.logger.log(NivelLog.DEBUG, "El número de tarjeta es 37-8: "+valorTarjeta.substring(37, 45));
tarjeta = this.parsearTarjeta_troquelado(valorTarjeta.substring(37,45));
}
}
else
{
sMensaje = "Está usando un lector mal configurado... Póngase en contacto con el departamento de informática. Gracias.";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
pista3=true;
/*tarjeta = this.parsearTarjeta_pista3(valorTarjeta.substring(valorTarjeta.length()-34));
tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_propios);*/
}
}
else if (valorTarjeta.length()>50 && valorTarjeta.length()<80)
{
//hay algunas tarjetas que vienen sin el nombre en la pista uno y son más cortas aunque leamos las uno y dos:
// %B8034314600000001020%803431460000000002028235=006000011001%
if(Utilidades.contar_coincidencias(valorTarjeta, "%") >= 2)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Lectura de la pistas 1 y 2 pero de las cortas- "+valorTarjeta.substring(1, 8));
String[] pistas = valorTarjeta.split("%");
String pista2 = pistas[2];
LogTarisan.logger.log(NivelLog.DEBUG, "Pista2 vale: "+pista2);
//Le añadimos un espacio delante por que las otras tarjetas llevan un = y empezamos la comprobación del lun desde el segundo caracter
tarjeta = this.parsearTarjeta_pista2(" "+pista2);
}
else
{
LogTarisan.logger.log(NivelLog.DEBUG, "Lectura de la pista 1 - "+valorTarjeta.substring(1, 8));
tarjeta = this.parsearTarjeta_pista1(valorTarjeta);
}
}
else if(valorTarjeta.length()>96)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Lectura de las pistas 1 y 2");
if(valorTarjeta.charAt(46) == '=')
{
LogTarisan.logger.log(NivelLog.DEBUG, "Lectura de tarjetas \"chungas\" de sanitas y derivados. Caracter42: "+valorTarjeta.charAt(42));
//la tarjeta puede estar de la 39 a la 45 si en la posición 42 no hay un =
if(valorTarjeta.charAt(42) == '=')
{
LogTarisan.logger.log(NivelLog.DEBUG, "El número de tarjeta es 33-8: "+valorTarjeta.substring(33, 41));
tarjeta = this.parsearTarjeta_troquelado(valorTarjeta.substring(33, 41));
}
else
{
LogTarisan.logger.log(NivelLog.DEBUG, "El número de tarjeta es 37-8: "+valorTarjeta.substring(37, 45));
tarjeta = this.parsearTarjeta_troquelado(valorTarjeta.substring(37,45));
}
}
else if (valorTarjeta.substring(1, 6).compareTo(ParametrosConfiguracion.bin_redsa_asisa) != 0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "valorTarjeta.substring(2,8)->"+valorTarjeta.substring(2,8));
tarjeta = this.parsearTarjeta_pistas1_2(valorTarjeta);
}
}
/*else
{
LogTarisan.logger.log(NivelLog.DEBUG, "Lectura manual del número de tarjeta: ATS"+(String)sesion.getAttribute("PERFIL"));
String perfil = (String)sesion.getAttribute("PERFIL");
if(perfil.compareTo(Constantes.PERFIL_ATS) == 0)
tarjeta = this.parsearTarjeta_troquelado(valorTarjeta);
}*/
if (!pista3){
tratarEntidades(valorTarjeta, tarjeta, separador, sMensaje, sesion, request, response, resul, medico);
}
}
else
{
sMensaje = "Tarjeta de paciente inválida";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
}
catch(ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Excepcion en el paso de tarjeta " + valorTarjeta + " (" + ex + ")");
throw ex;
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, "Excepcion en el paso de tarjeta " + valorTarjeta + " (" + ex + ")");
throw new ExcepcionTarisan(ex.getMessage());
}
return resul;
}
private Paciente parsearDesplazado_pistas1_2(String valorTarjeta)
{
Paciente pac = new Paciente();
String asegurado = "";
StringTokenizer st = new StringTokenizer(valorTarjeta, "%");
int iteracion = 0;
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a parsear un desplazado leyendo las pistas 1 y 2 de la tarjeta");
while (st.hasMoreTokens())
{
String strtarjeta = st.nextToken() ;
//lectura 1 pista
iteracion = iteracion +1;
if(iteracion == 1)
{
//LogTarisan.logger.log(NivelLog.DEBUG, "\n\n\nempieza por: "+strtarjeta.substring(0, 5)+"--> "+ParametrosConfiguracion.bin_chipcard_sanitas+"\n\n\n");
/*if((strtarjeta.substring(0, 5).compareTo(ParametrosConfiguracion.bin_redsa_asisa) == 0) || (strtarjeta.substring(1, 7).compareTo(ParametrosConfiguracion.bin_chipcard_imqbilbo) == 0))
{
asegurado = nombre_asegurado_falta_letra(valorTarjeta);
//asegurado = valorTarjeta.substring(19, 45);
pac.setNombre(asegurado);
}
else if(strtarjeta.substring(0, 6).compareTo("846101") == 0) //strtarjeta.length()>50 && strtarjeta.length()<80)
{
//
/*
* Tarjeta adeslas:
* %B80344600000006631936500=M. SOLEDAD DORADO PORTELA =611012120606%803446000000066319365006=611121200000%
* %B80344600000003140007400=MARIA GARCIA CALAVIA =824080121401%803446000000031400074006=824801201401%
*
asegurado = nombre_asegurado_falta_letra(valorTarjeta);
//asegurado = strtarjeta.substring(25, 55);
pac.setNombre(asegurado);
}*/
if((strtarjeta.indexOf('Â')+strtarjeta.indexOf('Ê')+strtarjeta.indexOf('Î')+strtarjeta.indexOf('Ô')+strtarjeta.indexOf('Û'))>0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta con la lectura con cejilla ^ en alguna vocal");
asegurado = nombre_asegurado_falta_letra(valorTarjeta);
}
else if (strtarjeta.substring(0, 5).compareTo(ParametrosConfiguracion.bin_redsa_asisa) == 0)
{
asegurado = nombre_asegurado_falta_letra(valorTarjeta);
}
else if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_sanitas)==0)
{
asegurado = valorTarjeta.substring(25, 54).trim();
}
else // if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_sanitas) == 0)
{
//asegurado = nombre_asegurado_falta_letra(valorTarjeta);
asegurado = valorTarjeta.substring(26, 55).trim();
}
pac.setNombre(asegurado);
}
if(iteracion == 2)
{
//lectura de la segunda pista:
LogTarisan.logger.log(NivelLog.DEBUG, "Leyendo la pista2: contrato = "+Integer.parseInt(strtarjeta.substring(strtarjeta.indexOf("=")+1, strtarjeta.indexOf('=')+4)));
Tarjeta tar = new Tarjeta();
tar.setPista2(strtarjeta);
if(strtarjeta.indexOf("=")>0)
{
tar.setTarjetaDesplazado(strtarjeta.substring(0, strtarjeta.indexOf("=")));
tar.setContrato(Integer.parseInt(strtarjeta.substring(strtarjeta.indexOf("=")+1, strtarjeta.indexOf('=')+4)));
LogTarisan.logger.log(NivelLog.DEBUG, "Contrato obtenido: "+tar.getContrato());
}
else
{
tar.setTarjetaDesplazado(strtarjeta.substring(0, strtarjeta.indexOf("�")));
tar.setContrato(Integer.parseInt(strtarjeta.substring(strtarjeta.indexOf("�")+1, strtarjeta.indexOf('�')+4)));
}
PersistenciaTabenefi aux = new PersistenciaTabenefi();
if(aux.existeTarjetaChipcard(tar.getTarjetaDesplazado(),0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "Como existeTarjetaChipcard la asigno");
int contrato = tar.getContrato();
tar = aux.generarObjetoTarjetaChipcard(tar.getTarjetaDesplazado(),0);
tar.setContrato(contrato);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignada correctamente");
}
else
{
tar.setPoliza(0);
}
LogTarisan.logger.log(NivelLog.DEBUG, "Asigno la tarjeta al paciente"+tar.getPista2()+"\n\n");
//LogTarisan.logger.log(NivelLog.DEBUG, "Entidad Chipcard: " + strtarjeta.substring(0, 6) + " y asisa es: " + ParametrosConfiguracion.bin_chipcard_adeslas);
if (strtarjeta.substring(0, 4).compareTo(ParametrosConfiguracion.bin_redsa_asisa.substring(1)) == 0)
{
tar.setEntidadChipcard(ParametrosConfiguracion.bin_redsa_asisa);
tar.setEntidadIMQ(4);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignamos la entidad 4 a las tarjetas de Asisa");
}
else if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_adeslas) == 0)
{
tar.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_adeslas);
tar.setEntidadIMQ(3);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignamos la entidad 3 a las tarjetas de Adeslas");
}
else if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_imqbilbo) == 0)
{
tar.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_imqbilbo);
tar.setEntidadIMQ(3);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignamos la entidad 3 a las tarjetas de IMQBilbao");
}
else if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
{
tar.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_propios);
tar.setEntidadIMQ(0);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignamos la entidad 0 a las tarjetas Propias");
}
else if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_dkv) == 0)
{
tar.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_dkv);
tar.setEntidadIMQ(32);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignamos la entidad 32 a las tarjetas de DKV");
}
else if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_sanitas) == 0)
{
tar.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_sanitas);
tar.setEntidadIMQ(5);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignamos la entidad 5 a las tarjetas de sanitas");
}
else if (strtarjeta.substring(0, 6).compareTo(ParametrosConfiguracion.bin_chipcard_hna) == 0)
{
tar.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_hna);
tar.setEntidadIMQ(58);
LogTarisan.logger.log(NivelLog.DEBUG, "Asignamos la entidad 58 a las tarjetas de hna-antares");
}
/*
* if(entidadChipcard.compareToIgnoreCase(ParametrosConfiguracion.bin_chipcard_adeslas) == 0)
entidad=3;
else if(entidadChipcard.compareToIgnoreCase(ParametrosConfiguracion.bin_chipcard_dkv) == 0)
entidad=32;
else if(entidadChipcard.compareToIgnoreCase(ParametrosConfiguracion.bin_chipcard_sanitas) == 0)
entidad=5;
else if(entidadChipcard.compareToIgnoreCase(ParametrosConfiguracion.bin_chipcard_imqbilbo) == 0)
entidad=3;
//entidad=7;
else if(entidadChipcard.compareToIgnoreCase(ParametrosConfiguracion.bin_redsa_asisa)==0)
entidad=4;
*/
//PersistenciaTabenefi perta = new PersistenciaTabenefi();
//pac.setFechaBaja(perta.getFechaBaja(strtarjeta.substring(0, strtarjeta.indexOf('='))));
LogTarisan.logger.log(NivelLog.DEBUG, "Justo antes de asignar la tarjeta al asegurado el contrato es: "+tar.getContrato());
tar.setEstadeBaja(false);
pac.setFechaBaja(null);
pac.setTarjeta(tar);
pac.setDesplazado(tar.getEntidadChipcard());
}
}
LogTarisan.logger.log(NivelLog.DEBUG, "Devuelvo el paciente con entidad Paciente.tarjeta.entidad: " + pac.getTarjeta().getEntidadIMQ()+" - "+pac.getTarjeta().getColectivo()+" - "+pac.getTarjeta().getPoliza()+" - "+pac.getTarjeta().getBeneficiario()+" ->"+pac.getTarjeta().getPista2());
pac.set_noesiguala_inactivar(true);
return pac;
}
/**
* Hay lectores que leen las tarjetas de forma rara y le asignan el caracter separador a la primera letra del nombre del asegurado:
* %B80344400051885104804440ISMAEL AIBAR NOTARIO ^186160121301%803444000518851048044402=186601210000%
* ^
* en lugar de leer
* %B80344400051885104804440^ISMAEL AIBAR NOTARIO ^186160121301%803444000518851048044402=186601210000%
* %B8461010071554411^POSSO DE CAICEDO MARIA HE^2210%8461010071554411=22101210%
* @param valorTarjeta lo que lee el lector
* @return el nombre del asegurado con la primera letra bien corregida.
*/
private String nombre_asegurado_falta_letra(String valorTarjeta)
{
String resul="";
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta leida: "+valorTarjeta);
if(valorTarjeta.contains("^"))
{
if(valorTarjeta.indexOf("^") == 55)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Se encuentra la ^. en la posicion 25 hay: " + valorTarjeta.charAt(25));
// String posicion = valorTarjeta.charAt(25)+"";
/*
* uso ifs por que le switch no funciona para strings/chars hasta la versión 1.7 de java
*/
if (valorTarjeta.charAt(25) == 'Â')
{
resul = "A"+valorTarjeta.substring(26, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la A -> "+resul);
}
else if (valorTarjeta.charAt(25) == 'Ê')
{
resul = "E"+valorTarjeta.substring(26, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la E -> "+resul);
}
else if (valorTarjeta.charAt(25) == 'Î')
{
resul = "I"+valorTarjeta.substring(26, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la I -> "+resul);
}
else if (valorTarjeta.charAt(25) == 'Ô')
{
resul = "O"+valorTarjeta.substring(26, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la O -> "+resul);
}
else if (valorTarjeta.charAt(25) == 'Û')
{
resul = "U"+valorTarjeta.substring(26, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la U -> "+resul);
}
}
else
{
if(valorTarjeta.charAt(18)== 'Â')
{
resul = "A"+valorTarjeta.substring(19, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la A -> "+resul);
}
else if(valorTarjeta.charAt(18)== 'Ê')
{
resul = "E"+valorTarjeta.substring(19, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la E -> "+resul);
}
else if(valorTarjeta.charAt(18)== 'Î')
{
resul = "I"+valorTarjeta.substring(19, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la I -> "+resul);
}
else if(valorTarjeta.charAt(18)== 'Ô')
{
resul = "O"+valorTarjeta.substring(19, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la O -> "+resul);
}
else if(valorTarjeta.charAt(18)== 'Û')
{
resul = "U"+valorTarjeta.substring(19, valorTarjeta.indexOf("^"));
LogTarisan.logger.log(NivelLog.DEBUG, "Es la U -> "+resul);
}
else if(valorTarjeta.charAt(18) == '^')
{
int fin = valorTarjeta.indexOf('^', 20);
resul = valorTarjeta.substring(19, fin);
LogTarisan.logger.log(NivelLog.DEBUG, "Nombre: "+resul);
}
else
{
resul = valorTarjeta.substring(26, 55).trim();
}
}
}
return resul.trim();
}
//private Tarjeta parsearTarjeta_pistas1_2(String valorTarjeta) throws ExcepcionTarisan
public static Tarjeta parsearTarjeta_pistas1_2(String valorTarjeta) throws ExcepcionTarisan
{
//%B80343100000000000194706=RIPA PEREZ JOSE JAVIER ^001100000811%803431000000000001947068=001000010811%
Tarjeta tarjeta = new Tarjeta();
tarjeta.setValida(false);
StringTokenizer st = new StringTokenizer(valorTarjeta, "%");
String entidad = "";
while (st.hasMoreTokens())
{
//obtenemos los String correspondientes a cada pista
String strtarjeta = st.nextToken() ;
boolean desplazado = false;
if(strtarjeta.length()>50 && strtarjeta.length()<80)
{
//Pista1
LogTarisan.logger.log(NivelLog.DEBUG, "Pista 1: "+strtarjeta);
//803431 --> DIRECTOS IMQ
/*
* La entidad a la que pertenece la tarjeta:
* 0 -> IMQ DIRECTOS
* 1 -> ADESLAS
* 2 -> DKV
* 3 -> SANITAS
* 4 -> ERROR!!
* 58 -> ANTARES
*/
if(strtarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_propios);
entidad = ParametrosConfiguracion.bin_chipcard_propios;
desplazado = false;
}
else if(strtarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_dkv) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_dkv);
entidad = ParametrosConfiguracion.bin_chipcard_dkv;
desplazado = true;
}
else if(strtarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_adeslas) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_adeslas);
entidad = ParametrosConfiguracion.bin_chipcard_adeslas;
desplazado = true;
}
else if(strtarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_sanitas) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_sanitas);
entidad = ParametrosConfiguracion.bin_chipcard_sanitas;
desplazado = true;
}
else if(strtarjeta.substring(0,6).compareTo(ParametrosConfiguracion.bin_chipcard_sanitas) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_sanitas);
entidad = ParametrosConfiguracion.bin_chipcard_sanitas;
desplazado = true;
}
else if(strtarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_imqbilbo) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_sanitas);
entidad = ParametrosConfiguracion.bin_chipcard_imqbilbo;
desplazado = true;
}
/*else if(strtarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_hna) == 0)*/
else if(strtarjeta.substring(1,7).compareTo("803497") == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_sanitas);
//throw new ExcepcionTarisan("Error! La tarjeta es de una entidad con la que no tenemos acuerdo"); /*El 17/02/2016 llama Daniel Cámara diciendo que se excluyan de Tarisan las tarjetas de antares */
throw new ExcepcionTarisan("Error! La facturación de las tarjetas de HNA/ANTARES debe hacerse de forma manual");
/*entidad = ParametrosConfiguracion.bin_chipcard_hna;
desplazado = true;*/
}
else
{
LogTarisan.logger.log(NivelLog.ERROR, "Error! La tarjeta es de una entidad con la que no tenemos acuerdo");
/*throw new ExcepcionTarisan("Error! La tarjeta es de una entidad con la que no tenemos acuerdo");*/
}
}
else
{
//Pista2
LogTarisan.logger.log(NivelLog.DEBUG, "Pista 2: "+strtarjeta);
//tarjeta = this.parsearTarjeta_pista2("%"+strtarjeta);
tarjeta = parsearTarjeta_pista2("%"+strtarjeta);
tarjeta.setTarjetaDesplazado(strtarjeta.substring(0, 24));
tarjeta.setPista2(strtarjeta);
LogTarisan.logger.log(NivelLog.DEBUG, "La tarjeta es de la entidad: "+tarjeta.getEntidadChipcard());
if(entidad == "")
entidad = tarjeta.getEntidadChipcard();
//
/*%B80343611111100002222203^TARJETA PRUSANITAS ^502120126811%803436111111000022222031=502201216811%
* Hay que leer el contrato chipcard en la pista dos, son los 3 dígitos que vienen después del =
* y tambión la fecha de alta que viene en los últimos 4 dígitos de la pista 2
* No nos interesa la fecha de alta de la tarjeta, ponemos la fecha de hoy
*/
//LogTarisan.logger.log(NivelLog.DEBUG, "Contrato de la pista 2: "+strtarjeta.substring(strtarjeta.indexOf("=")+1, strtarjeta.indexOf('=')+4));
//tarjeta.setContrato(Integer.parseInt(strtarjeta.substring(strtarjeta.indexOf("=")+1, strtarjeta.indexOf('=')+4)));
Calendar fecha = Calendar.getInstance();
String fecha_alta = "";
fecha_alta = String.valueOf(fecha.get(Calendar.MONTH)+1);
if(fecha_alta.length()<2)
fecha_alta = "0"+fecha_alta;
fecha_alta = fecha_alta + String.valueOf(fecha.get(Calendar.YEAR)).substring(2);
tarjeta.setFecha_Alta_Chipcard(fecha_alta);
}
}
tarjeta.setEntidadChipcard(entidad);
LogTarisan.logger.log(NivelLog.DEBUG, "Entidad: " + tarjeta.getEntidadChipcard());
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta: "+tarjeta.getTarjeta());
return tarjeta;
}
private Tarjeta parsearTarjeta_troquelado(String valorTarjeta) throws ExcepcionTarisan
{
//0019470683150465
Tarjeta tarjeta = new Tarjeta();
tarjeta.setValida(false);
try
{
PersistenciaTabenefi pertabenefi = new PersistenciaTabenefi();
tarjeta = pertabenefi.generarObjetoTarjeta(Integer.parseInt(valorTarjeta.substring(0, 8)));
tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_propios);
}
catch(Exception ex)
{
throw new ExcepcionTarisan(ex.toString());
}
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n\nValor tarjeta: "+tarjeta.getTarjeta());
tarjeta.setValida(true);
return tarjeta;
}
private Tarjeta parsearTarjeta_redsa(String valorTarjeta) throws ExcepcionTarisan
{
Tarjeta resultado = new Tarjeta();
/*
* vamos a buscar en ttbenefi si existe la tarjeta_chipcard para obtener col, pol, orden
*/
PersistenciaTabenefi per = new PersistenciaTabenefi();
resultado = per.generarObjetoTarjetaChipcard(valorTarjeta.substring(2,18), 0);
resultado.setValida(true);
resultado.setEntidadChipcard(ParametrosConfiguracion.bin_redsa_asisa);
resultado.setTarjetaDesplazado(valorTarjeta.substring(2, 18));
Calendar fecha = Calendar.getInstance();
String fecha_alta = "";
fecha_alta = String.valueOf(fecha.get(Calendar.MONTH)+1);
if(fecha_alta.length()<2)
fecha_alta = "0"+fecha_alta;
fecha_alta = fecha_alta + String.valueOf(fecha.get(Calendar.YEAR)).substring(2);
resultado.setFecha_Alta_Chipcard(fecha_alta);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n\nVamos a buscar col,pol,ord de la tar asisa: "+valorTarjeta);
/* ya hemos parseado la tarjeta no hace falta volverlo a hacer */
//Paciente temporal = parsearDesplazado_pistas1_2(valorTarjeta);
//Tarjeta aux = temporal.getTarjeta();
//resultado.setContrato(aux.getContrato());
LogTarisan.logger.log(NivelLog.DEBUG, "Contrato = "+resultado.getContrato());
//resultado.setEntidadIMQ(4);
//resultado.setFecha_Alta_Chipcard(fecha_alta);
return resultado;
}
private Tarjeta parsearTarjeta_pista1(String valorTarjeta) throws ExcepcionTarisan
{
//%B80343100000000000194706=RIPA PEREZ JOSE JAVIER ^001100000811
Tarjeta tarjeta = new Tarjeta();
tarjeta.setValida(false);
try
{
PersistenciaTabenefi pertabenefi = new PersistenciaTabenefi();
tarjeta = pertabenefi.generarObjetoTarjeta(Integer.parseInt(valorTarjeta.substring(15, 25)));
if(tarjeta.getValida())
tarjeta.setTarjetaDesplazado(valorTarjeta.substring(2,25));
String entidad = "0";
if(valorTarjeta.substring(2,8).compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_propios);
entidad = ParametrosConfiguracion.bin_chipcard_propios;
}
else if(valorTarjeta.substring(2,8).compareTo(ParametrosConfiguracion.bin_chipcard_dkv) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_dkv);
entidad = ParametrosConfiguracion.bin_chipcard_dkv;
}
else if(valorTarjeta.substring(2,8).compareTo(ParametrosConfiguracion.bin_chipcard_adeslas) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_adeslas);
entidad = ParametrosConfiguracion.bin_chipcard_adeslas;
}
else if(valorTarjeta.substring(2,8).compareTo(ParametrosConfiguracion.bin_chipcard_sanitas) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_sanitas);
entidad = ParametrosConfiguracion.bin_chipcard_sanitas;
}
else if(valorTarjeta.substring(2,8).compareTo(ParametrosConfiguracion.bin_chipcard_imqbilbo) == 0)
{
//tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_sanitas);
entidad = ParametrosConfiguracion.bin_chipcard_imqbilbo;
}
else
{
//throw new ExcepcionTarisan("Error! La tarjeta es de una entidad con la que no tenemos acuerdo");
LogTarisan.logger.log(NivelLog.ERROR, "Error! La tarjeta es de una entidad con la que no tenemos acuerdo");
}
tarjeta.setEntidadChipcard(entidad);
/*
* al leer solo la pista 1 no tenemos el luhn así que si llega hasta aquí calculamos el luhn válido para poder meter el dato completo en tamovext
* he detectado que alguna tarjeta consigue provocar un bucle infinito, añado un contador para que no haga más de 11 intentos
*/
int luhn = 0;
int cont=1;
boolean seguir = false;
while(!seguir && cont<11){
cont+=1;
seguir = Utilidades.calcularLuhn(valorTarjeta.substring(2,25)+luhn);
if(!seguir)
luhn+=1;
}
if(tarjeta.getValida())
tarjeta.setTarjetaDesplazado(valorTarjeta.substring(2,25)+luhn);
LogTarisan.logger.log(NivelLog.DEBUG, "Pista 1: Valor Tarjeta: "+tarjeta.getTarjeta());
}
catch(Exception ex)
{
throw new ExcepcionTarisan(ex.toString());
}
return tarjeta;
}
private boolean tratarEntidades(String valorTarjeta,Tarjeta tarjeta, Integer separador, String sMensaje, HttpSession sesion, HttpServletRequest request, HttpServletResponse response, boolean resul, Integer medico) throws ExcepcionTarisan{
try{
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
LogTarisan.logger.log(NivelLog.DEBUG, "Se han cargado los datos bien. tarjeta: "+tarjeta.getTarjeta()+", contrato: "+tarjeta.getContrato()+", colectivo: "+tarjeta.getColectivo()+", poliza: "+tarjeta.getPoliza()+", orden"+tarjeta.getBeneficiario()+", entidad_chipcard: "+tarjeta.getEntidadChipcard()+"...");
// comprobamos si la poliza es una de las igualas del medico
if(tarjeta.getValida() && tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_propios)==0)
{
PersistenciaPaciente per = new PersistenciaPaciente();
Object objetoSeleccionado = null;
try
{
//objetoSeleccionado = per.seleccionar(tarjeta, ((Usuario)sesion.getAttribute("USUARIO")).getMedico());
//-> peta aqui
objetoSeleccionado = per.seleccionarColPolOrd(tarjeta, ((Usuario)sesion.getAttribute("USUARIO")).getMedico());
Paciente paciente = (Paciente)objetoSeleccionado;
LogTarisan.logger.log(NivelLog.INFO, "Tarjeta de paciente válida: " + tarjeta);
LogTarisan.logger.log(NivelLog.INFO, "Paciente: " + paciente.getNombre());
paciente.setDesplazado(ParametrosConfiguracion.bin_chipcard_propios);
String strPerfil = (String)sesion.getAttribute("PERFIL");
LogTarisan.logger.log(NivelLog.DEBUG, "Comprobar si esta autorizado" + paciente.getAutorizado().trim().toUpperCase());
LogTarisan.logger.log(NivelLog.DEBUG, "Comprobar si el bin de chipcard es propio o desplazado.");
PersistenciaTapolfac perTapolfac = new PersistenciaTapolfac();
// añadir a la sesion del paciente si es igualadel medico o no para no permitir hacer nada al médico de cabecera con pacientes que no son suyos
/*
* Siguiendo el ticket https://incidencias.imqnavarra.com/soporte/scp/tickets.php?id=52142 se cambia el comportamiento para los
* mutualistas. Siempre podrán ir a cualquier médico de cabecera.
* Modificar la función perTapolfac.esPolizaIgualaMedico para que si es mutualista devuelva siempre un 0 para que le deje
*/
/*Integer blnEsPolizaIgualaMedico = perTapolfac.esPolizaIgualaMedico(((Usuario)sesion.getAttribute("USUARIO")).getMedico(), paciente.getTarjeta().getColectivo(), paciente.getTarjeta().getPoliza());*/
int blnEsPolizaIgualaMedico = perTapolfac.esPolizaIgualaMedico(((Usuario)sesion.getAttribute("USUARIO")).getMedico(), paciente.getTarjeta().getColectivo(), paciente.getTarjeta().getPoliza());
LogTarisan.logger.log(NivelLog.DEBUG, "Comprobamos si es igualado. Para añadir al paciente en sesion. "+blnEsPolizaIgualaMedico);
boolean activo = true;
if(blnEsPolizaIgualaMedico == 2 && ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad() == 1)
{
LogTarisan.logger.log(NivelLog.DEBUG, "El médico de sesion es de cabecera y el paciente no es igualado suyo.");
activo = false;
}
else if(blnEsPolizaIgualaMedico == 1)
LogTarisan.logger.log(NivelLog.DEBUG, "El médico de sesion es de cabecera y el paciente es igualado suyo.");
else
LogTarisan.logger.log(NivelLog.DEBUG, "O el médico no es de cabecera.");
paciente.set_noesiguala_inactivar(activo);
sesion.setAttribute("PACIENTE", paciente);
if (paciente.getAutorizado().trim().toUpperCase().compareTo("S") == 0 || (!strPerfil.equalsIgnoreCase(Constantes.PERFIL_ANALISTA) /*&& !strPerfil.equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)*/))
{
//se trata de un analista. se le redirecciona a la pagina de analista
if ( ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA) ) {
//se comprueba si el paciente ha pasado una tarjeta dental en vez de una de salud
if(Utilidades.buscar_en_properties(""+tarjeta.getContrato(), ParametrosConfiguracion.contrato_dental))
//Se ha pasado una tarjeta dental para acceder a un especialista.
//Se redirige a gestor.jsp para que utilice una de salud
{
sMensaje = "
HA PASADO UNA TARJETA DENTAL. PARA ACCEDER AL ESPECIALISTA DEBE UTILIZAR UNA TARJETA DE SALUD
";
sesion.setAttribute("ERROR", sMensaje);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n Ha pasado una tarjeta dental para acceder a un especialista. Volvemos a gestor.jsp");
response.sendRedirect("../jsp/pac/gestor.jsp");
return resul = false;
}else{
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
}
//se trata de un radiologo. se le redirecciona a la pagina de radiologo
else if ( ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO) ) {
//se comprueba si el paciente ha pasado una tarjeta dental en vez de una de salud
if(Utilidades.buscar_en_properties(""+tarjeta.getContrato(), ParametrosConfiguracion.contrato_dental))
//Se ha pasado una tarjeta dental para acceder a un especialista.
//Se redirige a gestor.jsp para que utilice una de salud
{
sMensaje = "
HA PASADO UNA TARJETA DENTAL. PARA ACCEDER AL ESPECIALISTA DEBE UTILIZAR UNA TARJETA DE SALUD
";
sesion.setAttribute("ERROR", sMensaje);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n Ha pasado una tarjeta dental para acceder a un especialista. Volvemos a gestor.jsp");
response.sendRedirect("../jsp/pac/gestor.jsp");
return resul = false;
}else{
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
{
//se comprueba si el paciente ha pasado una tarjeta dental en vez de una de salud
if(Utilidades.buscar_en_properties(""+tarjeta.getContrato(), ParametrosConfiguracion.contrato_dental))
//Se ha pasado una tarjeta dental para acceder a un especialista.
//Se redirige a gestor.jsp para que utilice una de salud
{
sMensaje = "
HA PASADO UNA TARJETA DENTAL. PARA ACCEDER AL ESPECIALISTA DEBE UTILIZAR UNA TARJETA DE SALUD
";
sesion.setAttribute("ERROR", sMensaje);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n Ha pasado una tarjeta dental para acceder a un especialista. Volvemos a gestor.jsp");
response.sendRedirect("../jsp/pac/gestor.jsp");
return resul = false;
}else{
//se trata de un podólogo, ats, logopeda o de rehabilitación, hay que verificar que tiene autorización activa.
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
}
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA))
{
//se trata de un dentista, hay que ver si está usando una tarjeta dental, si tiene dental, o si siendo de salud tiene cobertura dental.
//tarjeta.getContrato() --> 723 (Dental),
LogTarisan.logger.log(NivelLog.DEBUG, "Perfil Odontologo");
if(Utilidades.buscar_en_properties(""+tarjeta.getContrato(), ParametrosConfiguracion.contrato_dental))
{
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
}
else
//Paciente con tarjeta de salud.
if (per.tieneDental(paciente.getTarjeta().getTarjetaDesplazado(), medico)){
//El paciente ha pasado una tarjeta de salud pero TIENE TARJETA DENTAL.
sMensaje = "
EL PACIENTE TIENE TARJETA DENTAL, DEBE UTILIZARLA
";
sesion.setAttribute("ERROR", sMensaje);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n Tiene tarjeta dental. Volvemos a gestor.jsp");
response.sendRedirect("../jsp/pac/gestor.jsp");
}else if (tarjeta.getContrato() == ParametrosConfiguracion.salud_con_cobertura_dental){
//El paciente no tiene tarjeta dental pero su TARJETA DE SALUD TIENE COBERTURA DENTAL
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
}else{
//Paciente SIN TARJETA NI COBERTURA DENTAL
//response.sendRedirect("../jsp/pac/franquicias_dentales.jsp" );
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
}
{
}
}
/*se trata de un especialista o de un medico de cabecera. Se le redirecciona a la pagina de facturacion.
else if ( ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA) ) {
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=0&pagina=1");
}*/
else
{
int compatible = especialidadCompatible(paciente, Integer.valueOf( ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad() ));
//se comprueba si el paciente ha pasado una tarjeta dental en vez de una de salud
if(Utilidades.buscar_en_properties(""+tarjeta.getContrato(), ParametrosConfiguracion.contrato_dental))
//Se ha pasado una tarjeta dental para acceder a un especialista.
//Se redirige a gestor.jsp para que utilice una de salud
{
sMensaje = "
HA PASADO UNA TARJETA DENTAL. PARA ACCEDER AL ESPECIALISTA DEBE UTILIZAR UNA TARJETA DE SALUD
";
sesion.setAttribute("ERROR", sMensaje);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n Ha pasado una tarjeta dental para acceder a un especialista. Volvemos a gestor.jsp");
response.sendRedirect("../jsp/pac/gestor.jsp");
return resul = false;
}
//se comprueba si el sexo del paciente es compatible con el de la especialidad
else if( compatible == 1)
{
response.sendRedirect("../jsp/pac/facturacion.jsp?x=0&pagina=1");
}
else
{
if (compatible == 2)
sMensaje = "El sexo del paciente no es compatible con la especialidad del médico.";
if (compatible ==3)
sMensaje = "El paciente tiene más de 14 años ya no tiene derecho a pediatría";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
}
}
else
{
LogTarisan.logger.log(NivelLog.INFO, "El beneficiario no ha firmado la autorización");
//se comprueba si el paciente ha pasado una tarjeta dental en vez de una de salud
if(Utilidades.buscar_en_properties(""+tarjeta.getContrato(), ParametrosConfiguracion.contrato_dental))
//Se ha pasado una tarjeta dental para acceder a un especialista.
//Se redirige a gestor.jsp para que utilice una de salud
{
sMensaje = "
HA PASADO UNA TARJETA DENTAL. PARA ACCEDER AL ESPECIALISTA DEBE UTILIZAR UNA TARJETA DE SALUD
";
sesion.setAttribute("ERROR", sMensaje);
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n Ha pasado una tarjeta dental para acceder a un especialista. Volvemos a gestor.jsp");
response.sendRedirect("../jsp/pac/gestor.jsp");
return resul = false;
}else{
sMensaje = "El beneficiario no ha firmado la autorización";
response.sendRedirect("../jsp/pac/firma_autorizacion.jsp");
}
}
}
catch(ClassCastException ex)
{
Integer nMensaje = (Integer)objetoSeleccionado;
sMensaje = this.obtenerMensaje(nMensaje);
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
}
resul = true;
}
/*
* hay que comprobar en el campo identificador de ttbenefi si el asegurado tiene asignado un valor
* si lo tiene seguimos igual que siempre, si no lo tiene hay que recargar la página gestor
* pasándole la lectura de la tarjeta y el parámetro embosado=1 para que solicite el valor
*/
else if(tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_adeslas)==0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta de adeslas");
//Verificamos si en ttbenefi tiene identificador:
PersistenciaTabenefi pertaben = new PersistenciaTabenefi();
boolean tiene_embosado = pertaben.tiene_embosado(tarjeta.getTarjetaDesplazado());
LogTarisan.logger.log(NivelLog.DEBUG, "ADESLAS: tiene embosado?"+tiene_embosado+", tiene parametro troquelado?"+request.getParameter("TROQUELADO"));
if(!tiene_embosado && (request.getParameter("TROQUELADO") != null) && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0)
{
String pista2 = pac.getTarjeta().getPista2();
tarjeta.setPista2(pista2);
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(3);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_adeslas);
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
/*if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), pac.getIdentificador()))
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
}else{*/
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
tades.setTroquelado(pac.getIdentificador());
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
// }
}
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado no esta casado y no puede acceder al analista");
sMensaje = "Este desplazado todavía no puede acceder a los servicios del anlaista";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
/*else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
}*/
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
}
else if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de adeslas no tiene embosado y no esta casado.\n");
response.sendRedirect("../jsp/pac/gestor.jsp?embosado=1");
resul = true;
}
else
{
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de adeslas tiene embosado o ya esta casada.\n");
//Aceptamos las tarjetas de adeslas:
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0)
{
String pista2 = pac.getTarjeta().getPista2();
tarjeta.setPista2(pista2);
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(3);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_adeslas);
}/*else if(pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0){
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(pac.getTarjeta().getEntidadIMQ());
tades.setContrato(pac.getTarjeta().getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}*/
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_adeslas);
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if(pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0){
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(pac.getTarjeta().getEntidadIMQ());
tades.setContrato(pac.getTarjeta().getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)){
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
/*else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
}*/
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
//Fin aceptamos las tarjetas de adeslas
}
/*
//No se aceptan tarjetas "ajenas
sMensaje = "La tarjeta no es de IMQ Navarra - Operativa no desarrollada Usar bacaladera";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
*/
}
else if(tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_hna)==0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta de hna");
//Verificamos si en ttbenefi tiene identificador:
PersistenciaTabenefi pertaben = new PersistenciaTabenefi();
boolean tiene_embosado = pertaben.tiene_embosado(tarjeta.getTarjetaDesplazado());
LogTarisan.logger.log(NivelLog.DEBUG, "HNA: tiene embosado?"+tiene_embosado+", tiene parametro troquelado?"+request.getParameter("TROQUELADO"));
if(!tiene_embosado && (request.getParameter("TROQUELADO") != null) && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0)
{
String pista2 = pac.getTarjeta().getPista2();
tarjeta.setPista2(pista2);
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(58);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_hna);
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
/*if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), pac.getIdentificador()))
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
}else{*/
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
tades.setTroquelado(pac.getIdentificador());
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
// }
}
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado no esta casado y no puede acceder al analista");
sMensaje = "Este desplazado todavía no puede acceder a los servicios del anlaista";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
}
else if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de hna no tiene embosado y no esta casado.\n");
response.sendRedirect("../jsp/pac/gestor.jsp?embosado=1");
resul = true;
}
else
{
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de hna tiene embosado o ya esta casada.\n");
//Aceptamos las tarjetas de hna:
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0)
{
String pista2 = pac.getTarjeta().getPista2();
tarjeta.setPista2(pista2);
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(58);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_hna);
}/*else if(pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0){
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(pac.getTarjeta().getEntidadIMQ());
tades.setContrato(pac.getTarjeta().getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}*/
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
pac.setTarjeta(tarjeta); // Provisional
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_hna);
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if(pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0){
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(pac.getTarjeta().getEntidadIMQ());
tades.setContrato(pac.getTarjeta().getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)){
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
//Fin aceptamos las tarjetas de hna
}
}
else if(tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_dkv)==0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta de dkv");
//Verificamos si en ttbenefi tiene identificador:
PersistenciaTabenefi pertaben = new PersistenciaTabenefi();
boolean tiene_embosado = pertaben.tiene_embosado(tarjeta.getTarjetaDesplazado());
LogTarisan.logger.log(NivelLog.DEBUG, "DKV: tiene embosado?"+tiene_embosado+", tiene parametro troquelado?"+request.getParameter("TROQUELADO"));
if(!tiene_embosado && (request.getParameter("TROQUELADO") != null) && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd
if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), request.getParameter("TROQUELADO")))
{*/
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
Paciente pac = new Paciente();
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0)
{
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(32);
LogTarisan.logger.log(NivelLog.DEBUG, "Después de parsear la tarjeta el contrato es: "+tarjeta.getContrato());
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_dkv);
pac.set_noesiguala_inactivar(true);
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
/*if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), pac.getIdentificador()))
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
}else{*/
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
tades.setTroquelado(pac.getIdentificador());
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
// }
}
if(!tiene_embosado)
{
/* insertar el identificador en bbdd */
}
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado no esta casado y no puede acceder al analista");
sMensaje = "Este desplazado todavía no puede acceder a los servicios del anlaista";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
//}
}
else if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0) )
{
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de dkv no tiene embosado\n");
response.sendRedirect("../jsp/pac/gestor.jsp?embosado=1");
resul = true;
}
else
{
Paciente pac = new Paciente();
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0)
{
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(32);
LogTarisan.logger.log(NivelLog.DEBUG, "Después de parsear la tarjeta el contrato es: "+tarjeta.getContrato());
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_dkv);
pac.set_noesiguala_inactivar(true);
}/*else if(pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0){
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}*/
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
/* if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)){
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");*/
/* insertar el identificador en bbdd */
/*if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), pac.getIdentificador()))
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
}else{*/
/*PersistenciaTabenefi perBen = new PersistenciaTabenefi();
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}*/
// }
// }
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if(pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0){
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)){
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
}
/*
sMensaje = "La tarjeta no es de IMQ Navarra - Operativa no desarrollada Usar bacaladera";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
*/
}
else if(tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_sanitas)==0 || tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_sanitas.substring(1)) == 0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta de sanitas: ");
//Verificamos si en ttbenefi tiene identificador:
PersistenciaTabenefi pertaben = new PersistenciaTabenefi();
boolean tiene_embosado = pertaben.tiene_embosado(tarjeta.getTarjetaDesplazado());
//Por ahora las tarjetas de sanitas no van a necesitar el embosado aunque llamamos a la función está puesta una excepcion en el código para que si es
//sanitas siempre devuelva true
// 18/04/2016 SE INSERTA EN TADESPLAZ
if(!tiene_embosado && (request.getParameter("TROQUELADO") != null) && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd
if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), request.getParameter("TROQUELADO")))
{*/
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
Paciente pac = new Paciente();
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0)
{
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(5);
LogTarisan.logger.log(NivelLog.DEBUG, "Después de parsear la tarjeta el contrato es: "+tarjeta.getContrato());
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_sanitas);
pac.set_noesiguala_inactivar(true);
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
/*if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), pac.getIdentificador()))
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
}else{*/
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
tades.setTroquelado(pac.getIdentificador());
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
// }
}
if(!tiene_embosado)
{
/* insertar el identificador en bbdd */
}
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)){
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
//}
}
else if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0) )
{
/*if(!tiene_embosado)
{*/
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de sanitas no tiene embosado\n");
response.sendRedirect("../jsp/pac/gestor.jsp?embosado=1");
resul = true;
}
else
{
Paciente pac = new Paciente();
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(tarjeta.getPoliza() == 0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "");
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(5);
}
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_sanitas);
}
else
{
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0){
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(pac.getTarjeta().getEntidadIMQ());
tades.setContrato(pac.getTarjeta().getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
/*if(!tiene_embosado)
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
// insertar el identificador en bbdd
if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), pac.getIdentificador()))
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
}
}*/
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)){
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
}
/*
sMensaje = "La tarjeta no es de IMQ Navarra - Operativa no desarrollada Usar bacaladera";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
*/
}
else if(tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_chipcard_imqbilbo)==0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta de IMQ Bilbao: "+tarjeta.getEntidadIMQ()+"-"+tarjeta.getColectivo()+"-"+tarjeta.getPoliza());
//Verificamos si en ttbenefi tiene identificador:
PersistenciaTabenefi pertaben = new PersistenciaTabenefi();
boolean tiene_embosado = pertaben.tiene_embosado(tarjeta.getTarjetaDesplazado());
LogTarisan.logger.log(NivelLog.DEBUG, "IMQ Bilbo: tiene embosado?"+tiene_embosado+", tiene parametro troquelado?"+request.getParameter("TROQUELADO"));
if(!tiene_embosado && (request.getParameter("TROQUELADO") != null) && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
//if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), request.getParameter("TROQUELADO")))
//{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
LogTarisan.logger.log(NivelLog.DEBUG, "Ya tenemos aqui el asegurado"+pac.getTarjeta().getEntidadIMQ()+" - "+pac.getTarjeta().getColectivo()+" - "+pac.getTarjeta().getPoliza()+" - "+pac.getTarjeta().getBeneficiario());
if(pac.getTarjeta().getPoliza() == 0)
{
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(3);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_imqbilbo);
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
sesion.setAttribute("PACIENTE", pac);
if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
tades.setTroquelado(pac.getIdentificador());
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado no esta casado y no puede acceder al analista");
sMensaje = "Este desplazado todavía no puede acceder a los servicios del anlaista";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
//}
}
else if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de imq bilbo no tiene embosado\n");
response.sendRedirect("../jsp/pac/gestor.jsp?embosado=1");
resul = true;
}
else
{
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
LogTarisan.logger.log(NivelLog.DEBUG, "Ya tenemos aqui el asegurado"+pac.getTarjeta().getEntidadIMQ()+" - "+pac.getTarjeta().getColectivo()+" - "+pac.getTarjeta().getPoliza()+" - "+pac.getTarjeta().getBeneficiario());
if(pac.getTarjeta().getPoliza() == 0)
{
tarjeta.setContrato(pac.getTarjeta().getContrato());
tarjeta.setEntidadIMQ(3);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_chipcard_imqbilbo);
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico).trim());
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
pac.setTarjeta(tarjeta);
pac.setDesplazado(tarjeta.getEntidadChipcard());
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
sesion.setAttribute("PACIENTE", pac);
if(pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0){
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(pac.getTarjeta().getEntidadIMQ());
tades.setContrato(pac.getTarjeta().getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)){
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
}
/*
sMensaje = "La tarjeta no es de IMQ Navarra - Operativa no desarrollada Usar bacaladera";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
*/
}
else if(tarjeta.getEntidadChipcard().compareTo(ParametrosConfiguracion.bin_redsa_asisa)==0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Tarjeta de ASISA");
//Verificamos si en ttbenefi tiene identificador:
PersistenciaTabenefi pertaben = new PersistenciaTabenefi();
boolean tiene_embosado = pertaben.tiene_embosado(tarjeta.getTarjetaDesplazado());
LogTarisan.logger.log(NivelLog.DEBUG, "ASISA: tiene embosado?"+tiene_embosado+", tiene parametro troquelado?"+request.getParameter("TROQUELADO"));
if(!tiene_embosado && (request.getParameter("TROQUELADO") != null) && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
/* insertar el identificador en bbdd */
//if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), request.getParameter("TROQUELADO")))
//{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0 )
{
//LogTarisan.logger.log(NivelLog.DEBUG, "\nDatos conseguidos: \n"+"Paciente.tarjeta.entidad="+tarjeta.getEntidadIMQ()+"\n"+"Paciente.tarjeta.contrato="+tarjeta.getContrato()+"\n");
//tarjeta.setContrato(pac.getTarjeta().getContrato());
//Los de asisa no nos dicen el contrato enlas pistas 1 ni 2 ponemos un 1 a fuego:
tarjeta.setContrato(1);
tarjeta.setEntidadIMQ(4);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_redsa_asisa);
LogTarisan.logger.log(NivelLog.DEBUG, "\nDatos conseguidos: \n"+"Paciente.tarjeta.entidad="+pac.getTarjeta().getEntidadIMQ()+"\n"+"Paciente.tarjeta.colectivo="+pac.getTarjeta().getEntidadIMQ()+"\n");
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico));
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
tades.setTroquelado(pac.getIdentificador());
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado no esta casado y no puede acceder al analista");
sMensaje = "Este desplazado todavía no puede acceder a los servicios del anlaista";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
//}
}
else if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "\nLa tarjeta de asisa no tiene embosado.\n");
response.sendRedirect("../jsp/pac/gestor.jsp?embosado=1");
resul = true;
}
else
{
Paciente pac = new Paciente();
//Si al llegar aquí ya hemos conseguido los datos, al parsear las pistas 1 y 2 el desplazado ha sido "casado" con su póliza de IMQ
// y no hay que volver a parsear la tarjeta.
if(tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0)
{
pac = parsearDesplazado_pistas1_2(valorTarjeta);
if(pac.getTarjeta().getPoliza() == 0 )
{
//LogTarisan.logger.log(NivelLog.DEBUG, "\nDatos conseguidos: \n"+"Paciente.tarjeta.entidad="+tarjeta.getEntidadIMQ()+"\n"+"Paciente.tarjeta.contrato="+tarjeta.getContrato()+"\n");
//tarjeta.setContrato(pac.getTarjeta().getContrato());
//Los de asisa no nos dicen el contrato enlas pistas 1 ni 2 ponemos un 1 a fuego:
tarjeta.setContrato(1);
tarjeta.setEntidadIMQ(4);
pac.setTarjeta(tarjeta);
pac.setDesplazado(ParametrosConfiguracion.bin_redsa_asisa);
LogTarisan.logger.log(NivelLog.DEBUG, "\nDatos conseguidos: \n"+"Paciente.tarjeta.entidad="+pac.getTarjeta().getEntidadIMQ()+"\n"+"Paciente.tarjeta.colectivo="+pac.getTarjeta().getEntidadIMQ()+"\n");
}
}
else
{
//Se ha parseado la tarjeta bien porque el desplazado esta casado pero no tenemos el nombre del asegurado
PersistenciaPaciente perpac = new PersistenciaPaciente();
pac.setNombre(perpac.obtenerNombreAsegurado(tarjeta,medico).trim());
LogTarisan.logger.log(NivelLog.DEBUG, "Se ha obtenido bien el nombre");
}
pac.setIdentificador(request.getParameter("TROQUELADO"));
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a introducir el troquelado si no lo tiene");
/*if(!tiene_embosado && (tarjeta.getBeneficiario()+tarjeta.getColectivo()+tarjeta.getPoliza() <= 0))
{
LogTarisan.logger.log(NivelLog.DEBUG, "No tiene metido el embosado hay que meterlo");*/
/* insertar el identificador en bbdd */
/*if(pertaben.añade_embosado(tarjeta.getTarjetaDesplazado(), pac.getIdentificador()))
{
LogTarisan.logger.log(NivelLog.INFO, "Se ha actualizado el identificador de la tarjeta chipcard: "+tarjeta.getTarjetaDesplazado());
}else{*/
/* PersistenciaTabenefi perBen = new PersistenciaTabenefi();
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}*/
// }
// }
pac.setTarjeta(tarjeta);
sesion.setAttribute("PACIENTE", pac);
if(!tiene_embosado && (pac.getTarjeta().getBeneficiario()+pac.getTarjeta().getColectivo()+pac.getTarjeta().getPoliza() <= 0)){
PersistenciaTabenefi perBen = new PersistenciaTabenefi();
PersistenciaTaDespla pertades = new PersistenciaTaDespla();
java.sql.Date fecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
Tadespla tades = new Tadespla();
tades.set_tarjeta(tarjeta.getTarjetaDesplazado());
tades.setNombre(pac.getNombre());
tades.setFecha_Alta(fecha);
tades.setEntidad_chipcard(tarjeta.getEntidadIMQ());
tades.setContrato(tarjeta.getContrato());
tades.setFecha_Registro(fecha);
//tades.setTroquelado(pac.getIdentificador());
tades.setTroquelado(perBen.obtenerIdentificador(tarjeta.getTarjetaDesplazado()));
if(pertades.Insertar_Tadespla(tades,intMedico)){
LogTarisan.logger.log(NivelLog.INFO, "Se ha insertado un nuevo movimiento en tadespla: "+tades.toString());
}else{
LogTarisan.logger.log(NivelLog.INFO, "NO SE HA PODIDO INSERTAR EN TADESPLA: "+tades.toString());
}
}
if (tarjeta.getEstadeBaja())
{
LogTarisan.logger.log(NivelLog.DEBUG, "El asegurado esta de baja!!!");
sMensaje = "La póliza de la tarjeta está de baja Contactar con IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA)){
response.sendRedirect("../jsp/pac/analista.jsp?x=10&pagina=1");
}
else if (((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO)){
response.sendRedirect("../jsp/pac/radiologo.jsp?x=11&pagina=1");
}
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_REHABPOD) || ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ATS))
response.sendRedirect("../jsp/pac/facturacion_rehabpod.jsp?x=1&pagina=1");
else if(((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ODONTOLOGIA)){
response.sendRedirect("../jsp/pac/facturacion_odon.jsp?x=2&pagina=1");
/*sMensaje = "Operativa no desarrollada";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );*/}
else
response.sendRedirect("../jsp/pac/facturacion_chipcard.jsp?x=0&pagina=1");
resul = true;
}
/*
sMensaje = "La tarjeta no es de IMQ Navarra - Operativa no desarrollada Usar bacaladera";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
*/
}
else
{
sMensaje = "Tarjeta de paciente erronea, puede estar caducada... El paciente debe ponerse en contacto con las oficinas de IMQ";
LogTarisan.logger.log(NivelLog.INFO, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
resul = false;
}
}
catch(Exception ex){
throw new ExcepcionTarisan(ex.toString());
}
return resul;
}
/**
*
* @param valorTarjeta
* @return
* @throws ExcepcionTarisan
*/
//private Tarjeta parsearTarjeta_pista2(String valorTarjeta) throws ExcepcionTarisan
private static Tarjeta parsearTarjeta_pista2(String valorTarjeta) throws ExcepcionTarisan
{
//=803431000000000001947068=001000010811%
//=803431460000000002031478=006000017606%
//=803431300000000002098236=300000011001%
//=803431460000000002114365=006000011208%
Tarjeta tarjeta = new Tarjeta();
tarjeta.setValida(false);
PersistenciaTaiguala pertaiguala = new PersistenciaTaiguala();
try
{
boolean cumple_Luhn = Utilidades.calcularLuhn(valorTarjeta.substring(1,25));
LogTarisan.logger.log(NivelLog.DEBUG, "Cumple el luhn: "+cumple_Luhn);
boolean esnuestra = Utilidades.tarjetaNuestraoDesplazado(valorTarjeta.substring(1,7));
LogTarisan.logger.log(NivelLog.DEBUG, "Es nuestra:"+esnuestra);
if(cumple_Luhn && esnuestra)
{
tarjeta.setTarjeta(Integer.parseInt(valorTarjeta.substring(16,24)));
tarjeta.setTarjetaDesplazado(valorTarjeta.substring(1,25));
LogTarisan.logger.log(NivelLog.DEBUG,"Número tarjeta: "+valorTarjeta.substring(16,24));
if(valorTarjeta.contains("==="))
{
LogTarisan.logger.log(NivelLog.DEBUG, "Vamos a ver si leemos las tarjetas de sanitas viejas...");
tarjeta.setTarjeta(Integer.parseInt(valorTarjeta.substring(16,22)));
tarjeta.setContrato(Integer.parseInt(valorTarjeta.substring(26, 29)));
}
StringBuffer sqlSelect = new StringBuffer();
sqlSelect.append("SELECT COLECTIVO");
sqlSelect.append(", POLIZA");
sqlSelect.append(", FECHA_BAJA");
sqlSelect.append(", ORDEN");
sqlSelect.append(", ENTIDAD");
sqlSelect.append(" FROM ttbenefi");
sqlSelect.append(" WHERE TARJETA = ? and fecha_alta <= sysdate");
//sqlSelect.append(" AND POLIZA = ?");
//sqlSelect.append(" AND ORDEN = ?");
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
Object aCondiciones[] = new Object[1];
aCondiciones[0] = Integer.valueOf(tarjeta.getTarjeta());
//aCondiciones[1] = Double.valueOf(tarjeta.getPoliza());
//aCondiciones[2] = Integer.valueOf(tarjeta.getBeneficiario());
int numTarjeta = 0;
int codCliente = 0;
Date fecBaja = null;
String autorizado = "";
ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones);
if(rs.next())
{
tarjeta.setColectivo(rs.getLong("COLECTIVO"));
tarjeta.setPoliza(rs.getLong("POLIZA"));
fecBaja = rs.getDate("FECHA_BAJA");
tarjeta.setBeneficiario(rs.getInt("ORDEN"));
tarjeta.setEntidadIMQ(rs.getInt("ENTIDAD"));
tarjeta.setValida(true);
}
rs.close();
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_propios);
int contrato = pertaiguala.obtenerContrato(tarjeta.getColectivo(), tarjeta.getPoliza(), tarjeta.getEntidadIMQ());
if(contrato > 0)
tarjeta.setContrato(contrato);
else
LogTarisan.logger.log(NivelLog.ERROR, "Error al obtener el contrato, tarjeta: "+tarjeta.getTarjeta());
}
else if(!cumple_Luhn)
{
LogTarisan.logger.log(NivelLog.ERROR, "Se ha pasado una tarjeta que no cumple el LUHN");
//%8034310001779851
// 803431
if(esnuestra)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Podemos tener una tarjeta de sanitas. "+valorTarjeta.substring(8,16));
tarjeta.setEntidadChipcard(ParametrosConfiguracion.bin_chipcard_propios);
tarjeta.setTarjeta(Integer.parseInt(valorTarjeta.substring(8,16)));
StringBuffer sqlSelect = new StringBuffer();
sqlSelect.append("SELECT COLECTIVO");
sqlSelect.append(", POLIZA");
sqlSelect.append(", FECHA_BAJA");
sqlSelect.append(", ORDEN");
sqlSelect.append(", ENTIDAD");
sqlSelect.append(" FROM ttbenefi");
sqlSelect.append(" WHERE TARJETA = ? and fecha_alta <= sysdate");
//sqlSelect.append(" AND POLIZA = ?");
//sqlSelect.append(" AND ORDEN = ?");
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
Date fecBaja = null;
Object aCondiciones[] = new Object[1];
aCondiciones[0] = Integer.valueOf(tarjeta.getTarjeta());
//aCondiciones[1] = Double.valueOf(tarjeta.getPoliza());
//aCondiciones[2] = Integer.valueOf(tarjeta.getBeneficiario());
ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones);
while(rs.next())
{
tarjeta.setColectivo(rs.getInt("COLECTIVO"));
tarjeta.setPoliza(rs.getLong("POLIZA"));
fecBaja = rs.getDate("FECHA_BAJA");
tarjeta.setBeneficiario(rs.getInt("ORDEN"));
tarjeta.setEntidadIMQ(rs.getInt("ENTIDAD"));
tarjeta.setValida(true);
}
rs.close();
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
int contrato = pertaiguala.obtenerContrato(tarjeta.getColectivo(), tarjeta.getPoliza(), tarjeta.getEntidadIMQ());
if(contrato > 0)
tarjeta.setContrato(contrato);
else
LogTarisan.logger.log(NivelLog.ERROR, "Error al obtener el contrato, tarjeta: "+tarjeta.getTarjeta());
}
else
{
//ni cumple el luhn ni es nuestra
//Aunque no cumple el luhn hay que parsearla por ser tarjeta de antares
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 2773:"+valorTarjeta.substring(1,25));
PersistenciaTabenefi per = new PersistenciaTabenefi();
tarjeta = per.generarObjetoTarjetaChipcard(valorTarjeta.substring(1,25), 0);
tarjeta.setValida(true);
if(valorTarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_adeslas) == 0)
tarjeta.setEntidadChipcard("803446");
if(valorTarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_hna) == 0)
tarjeta.setEntidadChipcard("803497");
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n\nTenemos tarjeta de desplazado!!");
}
}
else //cumple el luhn pero no es nuestra
{
/*
* vamos a buscar en ttbenefi si existe la tarjeta_chipcard para obtener col, pol, orden
*/
//LogTarisan.logger.log(NivelLog.DEBUG, "chipcardContrato :"+valorTarjeta.substring(valorTarjeta.indexOf("=")+1, valorTarjeta.indexOf("=")+4));
//Hay tarjetas que se leen con los separadores cambiados: %B80344400003916104804440&ANGEL CANTERA ORTIZ &001160127608%803444000039161048044405�001601210000
String contrato = "";
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3899");
if(valorTarjeta.indexOf("=")>0)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3901");
contrato = valorTarjeta.substring(valorTarjeta.indexOf("=")+1, valorTarjeta.indexOf("=")+4);
}
else
{
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3906"+valorTarjeta.indexOf("�"));
contrato = valorTarjeta.substring(valorTarjeta.indexOf("�")+1, valorTarjeta.indexOf("�")+4);
}
tarjeta.setContrato(Integer.parseInt(contrato));
if(valorTarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_imqbilbo) == 0)
{
//La tarjeta es del imq de bilbo, la marcamos como tal para que muestre el mensaje.
PersistenciaTabenefi per = new PersistenciaTabenefi();
tarjeta = per.generarObjetoTarjetaChipcard(valorTarjeta.substring(1,25), 0);
tarjeta.setValida(true);
tarjeta.setEntidadIMQ(3);
tarjeta.setEntidadChipcard("803444");
LogTarisan.logger.log(NivelLog.DEBUG, "Es de IMQ bilbo, le ponemos la entidad 3");
}
else
{
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 2773:"+valorTarjeta.substring(1,25));
PersistenciaTabenefi per = new PersistenciaTabenefi();
tarjeta = per.generarObjetoTarjetaChipcard(valorTarjeta.substring(1,25), 0);
tarjeta.setValida(true);
if(valorTarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_adeslas) == 0)
tarjeta.setEntidadChipcard("803446");
if(valorTarjeta.substring(1,7).compareTo(ParametrosConfiguracion.bin_chipcard_hna) == 0)
tarjeta.setEntidadChipcard("803497");
LogTarisan.logger.log(NivelLog.DEBUG, "\n\n\nTenemos tarjeta de desplazado!!");
}
}
}
catch(Exception ex)
{
throw new ExcepcionTarisan(ex.toString());
}
LogTarisan.logger.log(NivelLog.DEBUG, "Fin parsear tarjeta pista 2");
return tarjeta;
}
/**
* Parsea la tarjeta del paciente para recoger los campos necesarios de la misma.
* @param valorTarjeta El String leído en la pista 3 de la tarjeta del paciente.
* @return El objeto Tarjeta correspondiente al paciente.
*/
private Tarjeta parsearTarjeta_pista3(String valorTarjeta) throws ExcepcionTarisan
{
Tarjeta tarjeta = new Tarjeta();
tarjeta.setValida(false);
PersistenciaTaiguala pertaiguala = new PersistenciaTaiguala();
try
{
tarjeta.setTarjeta(Integer.parseInt(valorTarjeta.substring(0, 8)));
//tarjeta.setContrato(Integer.parseInt(valorTarjeta.substring(12, 15)));
//boolean cumple_Luhn = Utilidades.calcularLuhn(valorTarjeta.substring(0,24));
/* Con las tarjetas de los colectivos muy largos nos da problemas... vamos a buscarlos en la bbdd
tarjeta.setColectivo(Integer.parseInt(valorTarjeta.substring(15, 20)));
tarjeta.setPoliza(Double.parseDouble(valorTarjeta.substring(20, 32)));
tarjeta.setBeneficiario(Integer.parseInt(valorTarjeta.substring(32, 34)));
*/
StringBuffer sqlSelect = new StringBuffer();
sqlSelect.append("SELECT COLECTIVO");
sqlSelect.append(", POLIZA");
sqlSelect.append(", FECHA_BAJA");
sqlSelect.append(", ORDEN");
sqlSelect.append(", ENTIDAD");
sqlSelect.append(" FROM ttbenefi");
sqlSelect.append(" WHERE TARJETA = ? and fecha_alta <= sysdate");
//sqlSelect.append(" AND POLIZA = ?");
//sqlSelect.append(" AND ORDEN = ?");
Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion();
Object aCondiciones[] = new Object[1];
aCondiciones[0] = Integer.valueOf(tarjeta.getTarjeta());
//aCondiciones[1] = Double.valueOf(tarjeta.getPoliza());
//aCondiciones[2] = Integer.valueOf(tarjeta.getBeneficiario());
int numTarjeta = 0;
int codCliente = 0;
Date fecBaja = null;
String autorizado = "";
ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones);
while(rs.next())
{
tarjeta.setColectivo(rs.getLong("COLECTIVO"));
tarjeta.setPoliza(rs.getLong("POLIZA"));
fecBaja = rs.getDate("FECHA_BAJA");
tarjeta.setBeneficiario(rs.getInt("ORDEN"));
tarjeta.setEntidadIMQ(rs.getInt("ENTIDAD"));
tarjeta.setValida(true);
}
tarjeta.setContrato(pertaiguala.obtenerContrato(tarjeta.getColectivo(),tarjeta.getPoliza(), tarjeta.getEntidadIMQ()));
rs.close();
ParametrosConfiguracion.dataStore.liberarConexion(conexion);
}
catch(NumberFormatException ex)
{
throw new ExcepcionTarisan(ex.toString());
}
catch(StringIndexOutOfBoundsException ex)
{
throw new ExcepcionTarisan(ex.toString());
}
catch(Exception ex)
{
throw new ExcepcionTarisan(ex.toString());
}
return tarjeta;
}
/**
* Obtiene el mensaje de error correspondiente al paso de una tarjeta de paciente errónea.
* @param nMensaje Número del mensaje.
* @return El mensaje correspondiente.
*/
public static String obtenerMensaje(Integer nMensaje)
{
String mensaje = "";
if(nMensaje.equals(TARJETA_CADUCADA))
{
mensaje = "Tarjeta caducada, se ha emitido otra posterior";
}
else if(nMensaje.equals(TARJETA_BAJA))
{
mensaje = "Beneficiario de baja";
}
else if(nMensaje.equals(TARJETA_SUSPENSO))
{
mensaje = "Póliza en suspenso, pasar por oficina IMQ";
}
else if(nMensaje.equals(TARJETA_AUTORIZACION))
{
mensaje = "Acceso denegado a la aplicación, el beneficiario no ha firmado la autorización correspondiente";
}
else if(nMensaje.equals(TARJETA_FIRMA_AUTORIZACION))
{
mensaje = "Solicitud de la autorización del beneficiario";
}
else
{
mensaje = "OK";
}
return mensaje;
}
/**
* Comprueba la compatibilidad de un paciente con una especialidad, según sexo o edad
* @param paciente
* @param especialidad
* @return 1 si es compatible, 2 si el sexo no es compatible con la especialidad, 3 si ha ido al pediatra y tiene 15 o más...
*/
private int especialidadCompatible(Paciente paciente, int especialidad)
{
int compatible = 1;
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 2042: Sexo" + paciente.getSexo() + ", sexo.compareToIgnoreCase('H'): "+paciente.getSexo().compareToIgnoreCase("H"));
if (especialidad == 31 && paciente.getSexo().compareToIgnoreCase("H") == 0)
{
compatible=2;
}
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 2047: Edad" + paciente.getEdad()+ ", Especialidad:" + especialidad);
if (especialidad == 2 && paciente.getEdad() > 14)
{
compatible=3;
}
return compatible;
}
private boolean insertarVolanteIngreso(HttpServletRequest request, HttpServletResponse response, HttpSession sesion)
{
boolean resultado=false;
try
{
LogTarisan.logger.log(NivelLog.DEBUG, "Entramos en insertarVolanteIngreso");
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3070");
Tavolin tavolin = new Tavolin();
String fecha = request.getParameter("fec_paciente");
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3073 : "+request.getParameter("nom_paciente"));
String[] arrFecha = fecha.split("/");
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3075 : "+arrFecha[2] + "-" + arrFecha[1] + "-" + arrFecha[0]);
String mes = arrFecha[1];
String dia = arrFecha[0];
mes = mes.length() < 2 ? "0"+mes : mes;
dia = dia.length() < 2 ? "0"+dia : dia;
java.sql.Date dtFecha = new java.sql.Date(java.sql.Date.valueOf(arrFecha[2] + "-" + mes + "-" + dia).getTime());
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3076");
java.sql.Date hoy = new java.sql.Date(Calendar.getInstance().getTime().getTime());
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3079");
tavolin.set_fecha(hoy);
tavolin.set_nombre(request.getParameter("nom_paciente"));
tavolin.set_domicilio(request.getParameter("dir_paciente"));
tavolin.set_fecnac(dtFecha);
tavolin.set_nif(request.getParameter("nif_paciente"));
tavolin.set_medico(((Usuario)sesion.getAttribute("USUARIO")).getMedico());
tavolin.set_poliza(((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo() +" - "+((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza()+" - "+((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario());
tavolin.set_acto(Integer.parseInt(request.getParameter("acto_medico")));
tavolin.set_motivo(Integer.parseInt(request.getParameter("motivo_ingreso")));
tavolin.set_juicio(request.getParameter("diagnostico"));
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3090");
if(((Paciente)sesion.getAttribute("PACIENTE")).getDesplazado().compareTo(ParametrosConfiguracion.bin_chipcard_propios) == 0)
tavolin.set_tarjeta(((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjeta());
else
tavolin.set_tarjeta(Long.parseLong(((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjetaDesplazado()));
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3095");
PersistenciaTavolin pertavolin = new PersistenciaTavolin();
if(pertavolin.insertar(tavolin))
{
LogTarisan.logger.log(NivelLog.INFO, "Insercion correcta del volante de ingreso");
resultado = true;
}
}
catch (Exception ex)
{
try {
LogTarisan.logger.log(NivelLog.ERROR, "Excepcion al insertar el volante de ingreso: "+ex.toString());
String sMensaje = "Excepcion al insertar el volante de ingreso";
LogTarisan.logger.log(NivelLog.ERROR, sMensaje);
sesion.setAttribute("ERROR", sMensaje);
response.sendRedirect("../jsp/error.jsp" );
} catch (IOException e) {
LogTarisan.logger.log(NivelLog.ERROR, "Excepcion al insertar el volante de ingreso: "+e.toString());
}
}
LogTarisan.logger.log(NivelLog.DEBUG, "Fin insertarVolanteIngreso, con resultado : "+resultado);
return resultado;
}
private boolean insertarPrescripcionAutorizacion(HttpServletRequest request, HttpServletResponse response, HttpSession sesion)
{
boolean resultado = true;
try {
/*
*
*/
String listaCodigos = (String)request.getParameter("listaCodigoElementosPrescripcion");
String listaUnidades = (String)request.getParameter("unidadesElementosPrescripcion");
String informe = (String)request.getParameter("informePrescripcion");
PersistenciaTaconaut perta = new PersistenciaTaconaut();
ArrayList arrayCodigos= new ArrayList();
ArrayList arrayUnidades = new ArrayList();
StringTokenizer st = new StringTokenizer(listaCodigos, "¬");
while (st.hasMoreTokens())
{
String token = st.nextToken();
if(token.length()>0)
{
arrayCodigos.add(Integer.parseInt(token));
}
}
st = new StringTokenizer(listaUnidades, "¬");
while(st.hasMoreTokens())
{
String token = st.nextToken();
if(token.length()>0)
{
arrayUnidades.add(Integer.parseInt(token));
}
}
PersistenciaTareglog pertareg = new PersistenciaTareglog();
PersistenciaTamedico pertamedico = new PersistenciaTamedico();
int medico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
int especialidad = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad();
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 3347: "+(String)request.getParameter("especialidad"));
if(request.getParameter("especialidad") != null)
especialidad = Integer.parseInt((String)request.getParameter("especialidad"));
Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso();
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
//obtenemos el valor del campo param1 del medico conectado
//este valor se utiliza para calcular el numero de autorizacion para la prescripcion a realizar
int intParam1=pertamedico.obtenerValorParam1(medico);
//obtenemos el ultimo valor del campo correlativo de la tabla tareglog.
//Este campo es un numero correlativo utilizado para diferenciar las claves.
int intUltimoValorCorrelativo = pertareg.obtenerUltimoValorCorrelativo(medico, tsFechaUltimoAcceso);
//calculamos el numero de autorizacion para la prescripcion a realizar
long autorizacion = this.calcularCodigoAutorizacion(medico, intParam1);
//obtenemos la tarjeta del paciente de sesion
String tarjeta = "";
if(((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjeta() == 0)
tarjeta = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjetaDesplazado();
else
tarjeta = String.valueOf(((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getTarjeta());
if(autorizacion < 1)
autorizacion = 1;
for(int i=0; i 0) {
}
if (strListaElementosPrescripcion != null && strListaElementosPrescripcion.length() > 0) {
strListaElementosPrescripcionAux = strListaElementosPrescripcion.replace('\'', '~');
}
strListaElementosPrescripcion = strListaElementosPrescripcionAux;
while(strListaElementosPrescripcion.indexOf("~") != -1) {
strListaElementosPrescripcion = strListaElementosPrescripcion.replace('~','\'');
}
//Vector vElementosPrescripcion = new Vector();
arrayListaElementosPrescripcion = new ArrayList();
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 246");
if (strListaElementosPrescripcion != null && strListaElementosPrescripcion.length() > 0) {
// Lista no vacía
strListaElementosPrescripcion = strListaElementosPrescripcion.substring(strListaElementosPrescripcion.indexOf("¬") + 1);
//Separamos las diferentes determinaciones
int i = 0;
while (strListaElementosPrescripcion.indexOf("¬") != -1) {
//vElementosPrescripcion.add(strListaElementosPrescripcion.substring(0, strListaElementosPrescripcion.indexOf("¬")));
arrayListaElementosPrescripcion.add(strListaElementosPrescripcion.substring(0, strListaElementosPrescripcion.indexOf("¬")));
strListaElementosPrescripcion = strListaElementosPrescripcion.substring(strListaElementosPrescripcion.indexOf("¬") + 1);
i++;
}
}
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 259");
ArrayList temp = new ArrayList();
strListaUnidades = (String)request.getParameter("unidadesElementosPrescripcion");
if(strListaUnidades != null)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 261"+strListaUnidades);
strListaUnidades = strListaUnidades.substring(1);
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 264");
while(strListaUnidades.indexOf("¬") != -1)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 267");
arrayListaUnidades.add(strListaUnidades.substring(0, strListaUnidades.indexOf("¬")));
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 269: - "+strListaUnidades.substring(0, strListaUnidades.indexOf("¬")));
strListaUnidades = strListaUnidades.substring(strListaUnidades.indexOf("¬") + 1);
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 271");
}
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 274");
for(int i = 0; i=?");
strSql.append(" and tamovext_espia.fecha<=?");
strSql.append(" and tamovext_espia.fecha>= ADD_MONTHS(TO_DATE(TRUNC(SYSDATE, 'MM')),-2)");
strSql.append(" ORDER BY tamovext_espia.fecha");
aCondiciones = new Object[4];
aCondiciones[0] = Integer.valueOf( ((Usuario)sesion.getAttribute("USUARIO")).getMedico() );
aCondiciones[1] = Integer.valueOf( ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad() );
aCondiciones[2] = dtFecha;
aCondiciones[3] = dtFechaHasta;
PersistenciaVTamovextTaclient per = new PersistenciaVTamovextTaclient();
Vector vSeleccion = per.seleccionar(strSql.toString(), 0, aCondiciones);
VTamovextTaclient vTamovextTaclient = null;
double dblImporteTotal = 0;
for(int i = 0; i < vSeleccion.size(); i++)
{
vTamovextTaclient = (VTamovextTaclient)vSeleccion.elementAt(i);
dblImporteTotal += vTamovextTaclient.getPrecioActoMedico();
PdfPCell cell0 = new PdfPCell(new Phrase((vTamovextTaclient.getFecha()).toString(),fuente2));
cell0.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(cell0);
PdfPCell cell1 = new PdfPCell(new Phrase(vTamovextTaclient.getApellidos(),fuente2));
cell1.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(cell1);
PdfPCell cell2 = new PdfPCell(new Phrase(vTamovextTaclient.getDescripcionActoMedico(),fuente2));
cell2.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(cell2);
PdfPCell cell3 = new PdfPCell(new Phrase(Utilidades.formatearDouble(vTamovextTaclient.getPrecioActoMedico(),PersistenciaParametros.decimales),fuente2));
cell3.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(cell3);
//
}
//Celda en blanco
tableExterior.addCell(celdaLibre);
PdfPCell celdaImporteTotal = new PdfPCell(new Paragraph(" IMPORTE TOTAL " + Utilidades.formatearDouble(dblImporteTotal,PersistenciaParametros.decimales),fuente6));
celdaImporteTotal.setColspan(4); // Indicamos cuantas columnas ocupa la celda
celdaImporteTotal.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(celdaImporteTotal);
document.add(tableExterior);
//CERRAR DOCUMENTO
// step 5: we close the document
document.close();
} catch (Exception ex) {
LogTarisan.logger.log(NivelLog.ERROR, "Error!!"+ex);
System.out.println("Excepcion" + ex);
}
}
private void generarPDF(HttpServletRequest request, HttpServletResponse response, HttpSession sesion, int tipoDoc) throws ExcepcionTarisan
{
String strTexto = "";
LogTarisan.logger.log(NivelLog.DEBUG, "generarPDF - Empieza - TipoDoc: "+tipoDoc);
try
{
String strMedico = ((Usuario)sesion.getAttribute("USUARIO")).getNombreCab().toString();
String strDireccion = ((Usuario)sesion.getAttribute("USUARIO")).getDireccionCab().toString();
String strEspecialidad = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidadCab().toString();
String strPoblacion = ((Usuario)sesion.getAttribute("USUARIO")).getPoblacionCab();
String strNumColegiado = "Num. Colegiado: " + ((Usuario)sesion.getAttribute("USUARIO")).getColegiadoCab().toString();
String strTelefono = ((Usuario)sesion.getAttribute("USUARIO")).getTelefonoCab().toString();
String strIngreso = (String)request.getParameter("num_ingreso");
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 191");
SimpleDateFormat sdfFormateadorFecha=new SimpleDateFormat("dd/MM/yyyy");
java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime());
String strMensajeSinElementos="No ha seleccionado ningún acto médico.";
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 195");
// ArrayList que contedrá las descripciones de analíticas
ArrayList arrayListaElementosPrescripcion = null;
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 198");
//Arraylist que tiene el número de actos...
ArrayList arrayListaUnidades = new ArrayList();
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 201");
String strAutorizacion = "";
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 204: request.getAttribute(\"autorizacion\") = "+request.getAttribute("autorizacion"));
if (request.getAttribute("modifiAuto") != null && request.getAttribute("modifiAuto").toString().compareTo("")!=0) {
if (request.getAttribute("modifiAuto") != null) {
if(request.getAttribute("modifiAuto").getClass() == Long.class)
{
strAutorizacion = String.valueOf(request.getAttribute("modifiAuto"));
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 210: strAutorizacion"+strAutorizacion);
}
else
{
strAutorizacion = (String)request.getAttribute("modifiAuto");
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 215: strAutorizacion"+strAutorizacion);
}
}
}else{
if (request.getAttribute("autorizacion") != null) {
if(request.getAttribute("autorizacion").getClass() == Long.class)
{
strAutorizacion = String.valueOf(request.getAttribute("autorizacion"));
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 210: strAutorizacion"+strAutorizacion);
}
else
{
strAutorizacion = (String)request.getAttribute("autorizacion");
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 215: strAutorizacion"+strAutorizacion);
}
}
}
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 219");
String strInforme = "";
if (request.getParameter("informePrescripcion") != null) {
strInforme =(String)request.getParameter("informePrescripcion");
}
else if(request.getParameter("diagnostico") != null)
{
strInforme = (String)request.getParameter("diagnostico");
}
String strListaElementosPrescripcion = "";
String strListaElementosPrescripcionAux = "";
String strListaUnidades = "";
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 233");
if (request.getParameter("listaElementosPrescripcion") != null ) {
// Lista de elementos de Prescripción
LogTarisan.logger.log(NivelLog.DEBUG, "Se van a insertar los siguientes codigos de analitica: "+(String)request.getParameter("listaCodigoElementosPrescripcion"));
strListaElementosPrescripcion = (String)request.getParameter("listaElementosPrescripcion");
if (strListaElementosPrescripcion != null && strListaElementosPrescripcion.length() > 0) {
}
if (strListaElementosPrescripcion != null && strListaElementosPrescripcion.length() > 0) {
strListaElementosPrescripcionAux = strListaElementosPrescripcion.replace('\'', '~');
}
strListaElementosPrescripcion = strListaElementosPrescripcionAux;
while(strListaElementosPrescripcion.indexOf("~") != -1) {
strListaElementosPrescripcion = strListaElementosPrescripcion.replace('~','\'');
}
// Vector vElementosPrescripcion = new Vector();
arrayListaElementosPrescripcion = new ArrayList();
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 246");
if (strListaElementosPrescripcion != null && strListaElementosPrescripcion.length() > 0) {
// Lista no vacía
strListaElementosPrescripcion = strListaElementosPrescripcion.substring(strListaElementosPrescripcion.indexOf("¬") + 1);
//Separamos las diferentes determinaciones
int i = 0;
while (strListaElementosPrescripcion.indexOf("¬") != -1) {
arrayListaElementosPrescripcion.add(strListaElementosPrescripcion.substring(0, strListaElementosPrescripcion.indexOf("¬")));
strListaElementosPrescripcion = strListaElementosPrescripcion.substring(strListaElementosPrescripcion.indexOf("¬") + 1);
i++;
}
if (i==0){
arrayListaElementosPrescripcion.add(strListaElementosPrescripcion);
}
}
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 259");
ArrayList temp = new ArrayList();
strListaUnidades = (String)request.getParameter("unidadesElementosPrescripcion");
if(strListaUnidades != null)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 261"+strListaUnidades);
strListaUnidades = strListaUnidades.substring(1);
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 264");
while(strListaUnidades.indexOf("¬") != -1)
{
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 267");
arrayListaUnidades.add(strListaUnidades.substring(0, strListaUnidades.indexOf("¬")));
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 269: - "+strListaUnidades.substring(0, strListaUnidades.indexOf("¬")));
strListaUnidades = strListaUnidades.substring(strListaUnidades.indexOf("¬") + 1);
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 271");
}
LogTarisan.logger.log(NivelLog.DEBUG, "Llega 274");
for(int i = 0; i 0) {
tablePacienteI.addCell(new Paragraph(strNomPaciente,fuente2));
tablePacienteI.addCell(new Paragraph("",fuente2));
}
if (strPoblacion != null && strPoblacion.length() > 0) {
tablePacienteI.addCell(new Paragraph(strPoblacion,fuente2));
tablePacienteI.addCell(new Paragraph("",fuente2));
}
if (strnif != null && strnif.length() > 0) {
tablePacienteI.addCell(new Paragraph(strnif,fuente2));
tablePacienteI.addCell(new Paragraph("",fuente2));
}
tableExterior.addCell(tablePacienteI);
PdfPTable tablePacienteD = new PdfPTable(1);
tablePacienteD.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
if (strPoliza != null && strPoliza.length() > 0) {
tablePacienteD.addCell(new Paragraph(strPoliza,fuente2));
}
if (strfecnac != null && strfecnac.length() > 0) {
tablePacienteD.addCell(new Paragraph("Fecha Nacimiento: "+strfecnac,fuente2));
}
tableExterior.addCell(tablePacienteD);
} else if (tipoDoc == OPC_PAC_PETICION_AUTORIZACION || tipoDoc == OPC_PAC_PRESCRIPCION_ATS) {
PdfPCell celdaSubTitulo = new PdfPCell(new Paragraph("Paciente",fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
PdfPTable tablePacienteI = new PdfPTable(1);
tablePacienteI.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
if (strNomPaciente != null && strNomPaciente.length() > 0) {
tablePacienteI.addCell(new Paragraph(strNomPaciente,fuente2));
}
if (strAutorizacion != null && strAutorizacion.length() > 0) {
tablePacienteI.addCell(new Paragraph("Num. Solicitud: " + strAutorizacion,fuente2));
}
tableExterior.addCell(tablePacienteI);
PdfPTable tablePacienteD = new PdfPTable(1);
tablePacienteD.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
if (strPoliza != null && strPoliza.length() > 0) {
tablePacienteD.addCell(new Paragraph(strPoliza,fuente2));
}
if (strPoblacion != null && strPoblacion.length() > 0) {
tablePacienteD.addCell(new Paragraph(strPoblacion,fuente2));
}
tableExterior.addCell(tablePacienteD);
} else if (tipoDoc == OPC_PAC_VOLANTE_INGRESO){
PdfPCell celdaSubTitulo = new PdfPCell(new Paragraph("Paciente",fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
PdfPTable tablePacienteI = new PdfPTable(1);
tablePacienteI.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
if (strNomPaciente != null && strNomPaciente.length() > 0) {
tablePacienteI.addCell(new Paragraph(strNomPaciente,fuente2));
}
if (strPoblacion != null && strPoblacion.length() > 0) {
tablePacienteI.addCell(new Paragraph(strPoblacion,fuente2));
}
tableExterior.addCell(tablePacienteI);
PdfPTable tablePacienteD = new PdfPTable(1);
tablePacienteD.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
if (strPoliza != null && strPoliza.length() > 0) {
tablePacienteD.addCell(new Paragraph(strPoliza,fuente2));
}
tableExterior.addCell(tablePacienteD);
}
else {
PdfPCell celdaSubTitulo = new PdfPCell(new Paragraph("Paciente",fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
PdfPTable tablePacienteI = new PdfPTable(1);
tablePacienteI.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
if (strNomPaciente != null && strNomPaciente.length() > 0) {
tablePacienteI.addCell(new Paragraph(strNomPaciente,fuente2));
}
if (strAutorizacion != null && strAutorizacion.length() > 0) {
tablePacienteI.addCell(new Paragraph("Num. Solicitud: " + strAutorizacion,fuente2));
}
tableExterior.addCell(tablePacienteI);
PdfPTable tablePacienteD = new PdfPTable(1);
tablePacienteD.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
if (strPoliza != null && strPoliza.length() > 0) {
tablePacienteD.addCell(new Paragraph(strPoliza,fuente2));
}
if (strPoblacion != null && strPoblacion.length() > 0) {
tablePacienteD.addCell(new Paragraph(strPoblacion,fuente2));
}
tableExterior.addCell(tablePacienteD);
}
//Celda en blanco
tableExterior.addCell(celdaLibre);
//AÑADIR ANALISIS/RECETAS/
switch(tipoDoc){
case OPC_PAC_PRESCRIPCION_DIAGNOSTICO:
{
strTexto = "Ruego faciliten las siguientes pruebas:";
break;
}
case OPC_PAC_PRESCRIPCION_ANALITICA:
{
strTexto = "Ruego faciliten los siguientes análisis:";
break;
}
case OPC_PAC_PRESCRIPCION_ANATOMIA_PATOLOGICA:
{
strTexto = "Ruego faciliten las siguientes pruebas:";
break;
}
case OPC_PAC_PRESCRIPCION_FACTURACION:
{
strTexto = "Asistencia prestada:";
break;
}
case OPC_PAC_PETICION_AUTORIZACION:
{
strTexto = "Ruego faciliten la autorización de las siguientes pruebas:";
break;
}
case OPC_PAC_PRESCRIPCION_ATS:
{
strTexto = "Ruego realicen los siguientes actos:";
break;
}
case OPC_PAC_PRESCRIPCION_ESPECIALIDADES:
{
strTexto = "Ruego autoricen la asistencia a la especialidad:";
break;
}
case OPC_PAC_PRESCRIPCION_RECETAS:
{
strTexto = "DP./";
break;
}
case OPC_PAC_VOLANTE_INGRESO:
{
strTexto = "Solicito el siguiente ingreso:";
break;
}
}
//IMPRIMIR ANALISIS
if(tipoDoc != OPC_PAC_VOLANTE_INGRESO){
PdfPCell celdaSubTitulo = new PdfPCell(new Paragraph(strTexto,fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
String determinacion = "";
for (int i=0;i 0) {
determinacion = determinacion.replaceAll(" ", "");
PdfPCell celdaPrescripcion = new PdfPCell(new Paragraph(determinacion,fuente2));
celdaPrescripcion.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaPrescripcion.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(celdaPrescripcion);
}
}
}
//Celda en blanco
tableExterior.addCell(celdaLibre);
if(tipoDoc == OPC_PAC_VOLANTE_INGRESO)
{
String strInformeCabecera = "Detalles del ingreso";
PersistenciaTtactmed perta = new PersistenciaTtactmed();
String detalle = "Motivo: "+ perta.obtenerDescripcionMotivoIngreso(Integer.parseInt(request.getParameter("motivo_ingreso")))+", acto a realizar: "+perta.obtenerNombreActo(Integer.parseInt(request.getParameter("acto_medico")), ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad());
PdfPCell celdaSubTitulo = new PdfPCell(new Paragraph(strInformeCabecera,fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
if (detalle != null && detalle.length() > 0) {
PdfPCell celdaDetalle = new PdfPCell(new Paragraph(detalle,fuente2));
celdaDetalle.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaDetalle.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(celdaDetalle);
}
strTexto = "Informe médico";
celdaSubTitulo = new PdfPCell(new Paragraph(strTexto,fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
if (strInforme != null && strInforme.length() > 0) {
PdfPCell celdaInforme = new PdfPCell(new Paragraph(strInforme,fuente2));
celdaInforme.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaInforme.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(celdaInforme);
}
}
else if (tipoDoc != OPC_PAC_PRESCRIPCION_FACTURACION && tipoDoc != OPC_PAC_PRESCRIPCION_RECETAS) {
strTexto = "Informe médico";
PdfPCell celdaSubTitulo = new PdfPCell(new Paragraph(strTexto,fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
if (strInforme != null && strInforme.length() > 0) {
PdfPCell celdaInforme = new PdfPCell(new Paragraph(strInforme,fuente2));
celdaInforme.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaInforme.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(celdaInforme);
}
}
//Celda en blanco
tableExterior.addCell(celdaLibre);
if (tipoDoc == OPC_PAC_PRESCRIPCION_RECETAS) {
strTexto = "Informe/Posología";
PdfPCell celdaSubTitulo = new PdfPCell(new Paragraph(strTexto,fuente5));
celdaSubTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaSubTitulo.setBorder(Rectangle.BOTTOM);
tableExterior.addCell(celdaSubTitulo);
if (strInforme != null && strInforme.length() > 0) {
PdfPCell celdaInforme = new PdfPCell(new Paragraph(strInforme,fuente2));
celdaInforme.setColspan(2); // Indicamos cuantas columnas ocupa la celda
celdaInforme.setBorder(PdfPCell.NO_BORDER);
tableExterior.addCell(celdaInforme);
}
}
document.add(tableExterior);
//CERRAR DOCUMENTO
// step 5: we close the document
document.close();
} catch (Exception ex) {
System.out.println("Excepcion" + ex);
LogTarisan.logger.log(NivelLog.ERROR, "Excepcion al generarPDF: "+ex.toString());
}
}
}