/** * @(#) GestorMedicos.java */ package com.tarisan.servlets; import com.itextpdf.text.Document; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.Image; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.BaseFont; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import com.itextpdf.text.pdf.PdfWriter; import com.tarisan.control.*; import com.tarisan.data.*; import com.tarisan.log.*; import com.tarisan.util.DES; import com.tarisan.util.Print; import com.tarisan.util.Utilidades; import com.tarisan.excepcion.ExcepcionTarisan; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.PrintWriter; import java.sql.*; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Enumeration; import java.util.Vector; import jakarta.servlet.*; import jakarta.servlet.http.*; /** * Servlet direccionador a páginas JSP para el módulo de gestión de médicos. * @author Dpto. Informática. * @version 1.0, 24/09/2003 */ public class GestorMedicos extends HttpServlet implements Constantes { /** * Recepción de la petición de acceso al módulo de gestión de médicos solicitada por el cliente. * @param request Objeto HttpServletRequest enviado por el cliente. * @param response Objeto HttpServletResponse que recibirá el cliente. * @throws */ public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { LogTarisan.logger.log(NivelLog.INFO, "GestorMedicos.service().INI"); response.setHeader("Expires", "0"); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); HttpSession sesion = request.getSession(true); if(sesion.isNew() || (sesion.getAttribute("USUARIO") == null)) { LogTarisan.logger.log(NivelLog.DEBUG, "Sesión no iniciada"); response.sendRedirect("../html/login.html"); } else { if (sesion.getAttribute("PACIENTE") != null) { sesion.removeAttribute("PACIENTE"); } LogTarisan.logger.log(NivelLog.DEBUG, "Entrada aceptada al módulo de Gestión de Médicos"); String opcion = request.getParameter("OPCION"); this.evaluarOpcion(opcion, request, response, sesion); } LogTarisan.logger.log(NivelLog.INFO, "GestorMedicos.service().FIN"); } /** * Evalúa la opción del módulo de gestión de médicos solicitada por el usuario. * Redirigiendo a la página JSP correspondiente a la opción de menú requerida. * @param sOpcion El código de la opción de menú solicitada por el usuario. * @param response Objeto HttpServletResponse que retornará la página al cliente. * @throws */ private void evaluarOpcion(String sOpcion, HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws IOException { int nOpcion = 0; try { nOpcion = Integer.parseInt(sOpcion); } catch(NumberFormatException e) { } switch(nOpcion) { case OPC_MED_CABECERA: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Cabecera' seleccionada"); response.sendRedirect("../jsp/med/cabecera.jsp?x=0"); break; } case OPC_MED_PASSWORD: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Password' seleccionada"); response.sendRedirect("../jsp/med/password.jsp?x=1"); //response.sendRedirect("../jsp/pac/gestor.jsp"); break; } case OPC_MED_ACTOS: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Actos Médicos' seleccionada"); response.sendRedirect("../jsp/med/actos.jsp?x=2"); break; } case OPC_MED_LIQUIDACION: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Liquidación' seleccionada"); //Se trata de un analista. Se le redirecciona a la pagina de liquidación de analistas if ( ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_ANALISTA) ) { response.sendRedirect("../jsp/med/liquidacion_analista.jsp?x=4&pagina=1"); //Se trata de un radiologo. Se le redirecciona a la pagina de liquidación de radiologos. } else if ( ((String)sesion.getAttribute("PERFIL")).equalsIgnoreCase(Constantes.PERFIL_RADIOLOGO) ) { response.sendRedirect("../jsp/med/liquidacion_radiologo.jsp?x=5&pagina=1"); //Se trata de un especialista o de un medico de cabecera. Se le redirecciona a la pagina de liquidación. } else{ response.sendRedirect("../jsp/med/liquidacion.jsp?x=3"); } break; } case OPC_MED_PACIENTES: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Detalle de Pacientes' seleccionada"); response.sendRedirect("../jsp/med/pacientes.jsp?x=5"); break; } case OPC_MED_IRPF: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Detalle de I.R.P.F.' seleccionada"); response.sendRedirect("../jsp/med/irpf.jsp?x=6"); break; } case OPC_MED_MEDICAMENTOS: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Medicamentos' seleccionada"); response.sendRedirect("../jsp/med/medicamentos.jsp?x=8"); break; } case OPC_MED_PRESCRIPCIONES: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Prescripciones realizadas' seleccionada"); response.sendRedirect("../jsp/med/prescripciones.jsp?x=9"); break; } case OPC_MED_ANALISIS: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Análisis' seleccionada"); response.sendRedirect("../jsp/med/analisis.jsp?x=10"); break; } case OPC_MED_IGUALADOS: { LogTarisan.logger.log(NivelLog.DEBUG, "Opción 'Igualados' seleccionada"); response.sendRedirect("../jsp/med/igualados.jsp?x=12"); break; } case OPC_MED_PREAVISO: { LogTarisan.logger.log(NivelLog.DEBUG, "Preaviso de caducidad de clave"); response.sendRedirect("../jsp/med/preaviso.jsp"); break; } case OPC_MED_PETICION_CAPTURADA: { try { LogTarisan.logger.log(NivelLog.DEBUG, "Se acepta el analisis prescrito"); this.introducirPacientePeticion(request, response, sesion); response.sendRedirect("../jsp/med/peticiones_capturadas.jsp?x=17&exito=1"); } catch(ExcepcionTarisan ex) { LogTarisan.logger.log(NivelLog.ERROR, "Excepcion Tarisan - OPC_MED_PETICION_CAPTURADA: " + ex.getMensaje()); sesion.setAttribute("ERROR", "Error al introducir el paciente de la peticion capturada." + ex.getMensaje()); response.sendRedirect("../jsp/error.jsp"); } catch(Exception ex) { LogTarisan.logger.log(NivelLog.ERROR, "Excepcion - OPC_MED_PETICION_CAPTURADA: " + ex); sesion.setAttribute("ERROR", "Error al introducir el paciente de la peticion capturada."); response.sendRedirect("../jsp/error.jsp"); } break; } case OPC_MED_IMPRIMIR_PETICIONES: { try { LogTarisan.logger.log(NivelLog.DEBUG, "Imprimir peticciones capturadas"); this.generarPDFPeticiones(request, response, sesion, OPC_MED_IMPRIMIR_PETICIONES); DES encrypter = new DES(""+((Usuario)sesion.getAttribute("USUARIO")).getMedico()); String peticionEncriptada = encrypter.encrypt(""+((Usuario)sesion.getAttribute("USUARIO")).getMedico()); sesion.setAttribute("ENC", peticionEncriptada); response.sendRedirect("../jsp/med/peticiones_capturadas.jsp?x=17&pagina=1&imp=1"); } catch(ExcepcionTarisan ex) { LogTarisan.logger.log(NivelLog.ERROR, "Excepcion Tarisan - OPC_MED_IMPRIMIR_PETICIONES: " + ex.getMensaje()); sesion.setAttribute("ERROR", "Error en la impresion de las peticiones capturadas." + ex.getMensaje()); response.sendRedirect("../jsp/error.jsp"); } catch(Exception ex) { LogTarisan.logger.log(NivelLog.ERROR, "Excepcion - OPC_MED_IMPRIMIR_PETICIONES: " + ex); sesion.setAttribute("ERROR", "Error en la impresion de las peticiones capturadas."); response.sendRedirect("../jsp/error.jsp"); } break; } case OPC_MED_GENERAR_DETALLE_IRPF: { try { LogTarisan.logger.log(NivelLog.DEBUG, "Generar PDF del certificado de IRPF"); this.generarPDF_IRPF(request, response, sesion, OPC_MED_IMPRIMIR_PETICIONES); DES encrypter = new DES(""+((Usuario)sesion.getAttribute("USUARIO")).getMedico()); String irpfEncriptado = encrypter.encrypt(""+((Usuario)sesion.getAttribute("USUARIO")).getMedico() + "_" + (String)request.getParameter("anio")); sesion.setAttribute("ENC", irpfEncriptado); response.sendRedirect("../jsp/med/detalleIRPF.jsp?x=7&imp=1"); } catch(ExcepcionTarisan ex) { LogTarisan.logger.log(NivelLog.ERROR, "Excepcion Tarisan - OPC_MED_GENERAR_DETALLE_IRPF: " + ex.getMensaje()); sesion.setAttribute("ERROR", "Error en la creación del certificado de IRPF." + ex.getMensaje()); response.sendRedirect("../jsp/error.jsp"); } catch(Exception ex) { LogTarisan.logger.log(NivelLog.ERROR, "Excepcion - OPC_MED_GENERAR_DETALLE_IRPF: " + ex); sesion.setAttribute("ERROR", "Error en la creación del certificado de IRPF."); response.sendRedirect("../jsp/error.jsp"); } break; } case OPC_MED_ACTUALIZAR_CABECERA: //actualizamos los datos del medico de cabecera { try { LogTarisan.logger.log(NivelLog.DEBUG, "Se actualiza la informacion del medico de cabecera"); this.actualizarDatosMedicoCabecera(request, response, sesion); //redirigimos a la pagina de cabecera sesion.setAttribute("MSG", "Cambios guardados corréctamente."); response.sendRedirect("../jsp/med/cabecera.jsp?x=" + request.getParameter("x")); } catch(ExcepcionTarisan ex) { LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje()); sesion.setAttribute("ERROR", "Error en la actualizacion de los datos del médico." + ex.getMensaje()); response.sendRedirect("../jsp/error.jsp"); } catch(Exception ex) { LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex); sesion.setAttribute("ERROR", "Error en la actualizacion de los datos del médico."); response.sendRedirect("../jsp/error.jsp"); } break; } case OPC_MED_ACTUALIZAR_PASSWORD: //actualizamos el password del médico conectado { try { LogTarisan.logger.log(NivelLog.DEBUG, "Se actualiza el password del medico conectado"); if (this.claveMedicoExiste(((Usuario)sesion.getAttribute("USUARIO")).getMedico(), (String)request.getParameter("clave_anterior"), false)) { //Actualiza la password del usuario this.actualizarPassword(request, response, sesion); sesion.setAttribute("ERROR", "Se ha actualizado su clave correctamente"); //Redirige a la pagina de password de nuevo //response.sendRedirect("../jsp/med/password.jsp?x=" + request.getParameter("x")); //redirige a la página de pasar la tarjeta response.sendRedirect("../jsp/pac/gestor.jsp"); } else { LogTarisan.logger.log(NivelLog.INFO, "La clave anterior introducida no es correcta, no se puede actualizar a la nueva clave"); sesion.setAttribute("ERROR", "Clave anterior incorrecta, no se puede actualizar su nueva clave"); response.sendRedirect("../jsp/error.jsp"); } } catch(ExcepcionTarisan ex) { LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje()); sesion.setAttribute("ERROR", "Error en la actualizacion de la clave del medico." + ex.getMensaje()); response.sendRedirect("../jsp/error.jsp"); } catch(Exception ex) { LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex); sesion.setAttribute("ERROR", "Error en la actualizacion de la clave del medico."); response.sendRedirect("../jsp/error.jsp"); } break; } case OPC_MED_ACTUALIZAR_ACCESO: //actualizamos la clave de acceso al aconectarse por primera vez { try { LogTarisan.logger.log(NivelLog.DEBUG, "Se actualiza el password del medico conectado por ser el primer acceso a la aplicación"); if (this.claveMedicoExiste(((Usuario)sesion.getAttribute("USUARIO")).getMedico(), (String)request.getParameter("clave_nueva"), true)) { LogTarisan.logger.log(NivelLog.INFO, "La nueva clave debe ser diferente a la clave ya existente, no se puede actualizar a la nueva clave"); sesion.setAttribute("ERROR", "La nueva clave debe ser diferente a la clave ya existente"); response.sendRedirect("../jsp/error.jsp"); } else { //Actualiza la clave del primer acceso del usuario this.actualizarAcceso(request, response, sesion); //Redirige a la página inicial del usuario if(((String)sesion.getAttribute("PERFIL")).compareTo(PERFIL_ADMINISTRADOR) == 0) { response.sendRedirect("./GestorAdministracion?OPCION=" + OPC_ADM_USUARIO_LISTA); } else { response.sendRedirect("./GestorMedicos?OPCION=" + OPC_MED_LIQUIDACION); } } } catch(ExcepcionTarisan ex) { LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje()); sesion.setAttribute("ERROR", "Error en la actualizacion de la clave por primer acceso del medico." + ex.getMensaje()); response.sendRedirect("../jsp/error.jsp"); } catch(Exception ex) { LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex); sesion.setAttribute("ERROR", "Error en la actualizacion de la clave por primer acceso del medico."); response.sendRedirect("../jsp/error.jsp"); } break; } case OPC_MED_REGISTRAR_LOG_ANALISIS: //Registramos en la tabla TAREGLOG el movimiento realizado por el usuario. Visualizar un analisis. { try { LogTarisan.logger.log(NivelLog.DEBUG, "Se graba en la tabla TAREGLOG el movimiento realizado por el usuario. Visualizar un analisis."); String strAutorizacion = (String)request.getParameter("autorizacion"); int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico(); Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso(); //indicamos la sentencia select utilizada para ver el analisis StringBuffer strSql = new StringBuffer(); strSql.append("SELECT TARESANA.FECHA, ttclient.NOMBRE, ttclient.APELLIDOS, TARESANA.AUTORIZACION"); strSql.append(" FROM TARESANA, ttbenefi, ttclient"); strSql.append(" WHERE TARESANA.PRESCRIPTOR="); strSql.append(intMedico); strSql.append(" AND TARESANA.AUTORIZACION="); strSql.append(strAutorizacion); strSql.append(" AND TARESANA.COLEC=TABENEFI.COLEC"); strSql.append(" AND TARESANA.POLIZA=TABENEFI.POLIZA"); strSql.append(" AND TARESANA.ORDEN=TABENEFI.ORDEN"); strSql.append(" AND ttbenefi.CLIENTE=TTCLIENT.CLIENTE"); strSql.append(" and ttbenefi.fecha_baja is null"); strSql.append(" ORDER BY TARESANA.FECHA DESC"); //insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario PersistenciaTareglog perTareglog = new PersistenciaTareglog(); //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); perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TARESANA", strSql.toString(), ""); //redirigimos para mostrar el correspondiente analisis response.sendRedirect("../resultados/" + strAutorizacion + ".txt"); } catch(ExcepcionTarisan ex) { LogTarisan.logger.log(NivelLog.ERROR, "ExcepcionTarisan: " + ex.getMensaje()); sesion.setAttribute("ERROR", "Error al actualizar la tabla TAREGLOG." + ex.getMensaje()); response.sendRedirect("../jsp/error.jsp"); } catch(Exception ex) { LogTarisan.logger.log(NivelLog.ERROR, "Exception: " + ex); sesion.setAttribute("ERROR", "Error al actualizar la tabla TAREGLOG."); response.sendRedirect("../jsp/error.jsp"); } break; } case OPC_MED_ENVIAR_EMAIL: { LogTarisan.logger.log(NivelLog.DEBUG, "Enviamos el email de la incidencia"); String mensaje = request.getParameter("MENSAJE"); String tarjeta = request.getParameter("TARJETA"); String correo = request.getParameter("correo"); String asunto = request.getParameter("ASUNTO"); String nombreAdjuntos = request.getParameter("nombreAdjuntos"); String introducir_email = request.getParameter("introducir_email"); if (introducir_email!=null){ response.sendRedirect("../jsp/med/cabecera.jsp?x=0&email=1"); }else{ JavaMail javaMail = new JavaMail(); javaMail.mandarCorreo(mensaje,tarjeta,correo,asunto,nombreAdjuntos); /* Eliminar archivo adjunto si lo tiene */ File dir = new File(ParametrosConfiguracion.ruta_adjuntos+"/"); Vector archivos = Utilidades.buscar_ficheros_recursivo(dir); if (archivos != null) { for (int f=0; f < archivos.size() ; f++) { String path = archivos.elementAt(f); LogTarisan.logger.log(NivelLog.DEBUG, "Eliminamos todos los adjuntos. Ruta de adjunto "+f+": " + path); File adjunto = new File(path); if(adjunto.exists()) { adjunto.delete(); } } } response.sendRedirect("../jsp/med/incidencia.jsp?x=20&msg=Incidencia Enviada Correctamente"); } break; } default: { response.sendRedirect("../jsp/med/liquidacion.jsp"); break; } } } /** * @throws Exception * @throws IOException * @throws ServletException * Actualiza los datos de cabecera para el médico conectado a la aplicación. * @param request Objeto HttpServletRequest que contiene los parámetros enviados desde la página Html. * @param response Objeto HttpServletResponse que retornará la página al cliente. * @param sesion Objeto HttpSession utilizado para actualizar el objeto usuario con los datos de cabecera del medico ya modificados. * @throws */ private void actualizarDatosMedicoCabecera(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan, Exception { Object[] aValores=null; Object[] aCondiciones=null; Enumeration enumParametros=null; int intNumValores=0; int i; String strParametro=""; StringBuffer strSql = new StringBuffer(); Vector vNombreCamposValores = new Vector(); try { strSql.append("UPDATE TAMEDICO"); //calculamos el tamaño de los arrays de los valores y condiciones para construir la sentencia sql enumParametros = request.getParameterNames(); while (enumParametros.hasMoreElements()) { strParametro=(String)enumParametros.nextElement(); if (strParametro.indexOf("valor_")!=-1) //se trata de un parametro valor { intNumValores++; vNombreCamposValores.addElement(strParametro.substring(6)); } } //inicializamos los arrays con los valores y creamos la select //array valores strSql.append(" SET "); aValores = new Object[intNumValores]; for(i=0;iHttpServletRequest que contiene los parámetros enviados desde la página Html. * @param response Objeto HttpServletResponse que retornará la página al cliente. * @param sesion Objeto HttpSession que contiene los datos del médico conectado a la aplicación. * @throws */ private void actualizarPassword(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan { Object[] aValores = null; Object[] aCondiciones = null; StringBuffer strSql = new StringBuffer(); String strClaveNueva = (String)request.getParameter("clave_nueva"); Calendar calHoy = Calendar.getInstance(); int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico(); Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso(); try { strSql.append("UPDATE TAMEDICO"); strSql.append(" SET PASSWORD = ?"); strSql.append(" , FECHA_MODIF_CLAVE = ?"); strSql.append(" WHERE MEDICO = ?"); strSql.append(" AND ESPECIALIDAD = ?"); aValores = new Object[2]; aValores[0] = Utilidades.encripta(strClaveNueva, String.valueOf((((Usuario)sesion.getAttribute("USUARIO")).getMedico()))); aValores[1] = new Timestamp(calHoy.getTimeInMillis()); aCondiciones = new Object[2]; aCondiciones[0] = Integer.valueOf(((Usuario)sesion.getAttribute("USUARIO")).getMedico()); aCondiciones[1] = Integer.valueOf(((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad()); Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion); try { PersistenciaTamedico per = new PersistenciaTamedico(); per.modificarMedico(strSql.toString(), aValores, aCondiciones); PersistenciaTareglog perTareglog = new PersistenciaTareglog(); //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); //insertamos un registro en la tabla tareglog para indicar los movimientos realizados por el usuario perTareglog.insertarLog(intMedico, tsFechaUltimoAcceso, Calendar.getInstance(), intUltimoValorCorrelativo + 1, "TAMEDICO", Utilidades.obtenerSentenciaSQL(strSql, aValores, aCondiciones), "", 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 clave asociada al médico conectado a la aplicación cuando se trata del primer acceso a la misma. * @param request Objeto HttpServletRequest que contiene los parámetros enviados desde la página Html. * @param response Objeto HttpServletResponse que retornará la página al cliente. * @param sesion Objeto HttpSession que contiene los datos del médico conectado a la aplicación. * @throws */ private void actualizarAcceso(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan { Object[] aValores = null; Object[] aCondiciones = null; StringBuffer strSql = new StringBuffer(); String strClaveNueva = (String)request.getParameter("clave_nueva"); Calendar calHoy = Calendar.getInstance(); try { strSql.append("UPDATE TAMEDICO"); strSql.append(" SET PASSWORD = ?"); strSql.append(" , FECHA_MODIF_CLAVE = ?"); strSql.append(" , FECHA_ULT_ACCESO = ?"); strSql.append(" , BLOQUEO_CLAVE = ?"); strSql.append(" WHERE MEDICO = ?"); strSql.append(" AND ESPECIALIDAD = ?"); aValores = new Object[4]; aValores[0] = Utilidades.encripta(strClaveNueva, String.valueOf((((Usuario)sesion.getAttribute("USUARIO")).getMedico()))); aValores[1] = new Timestamp(calHoy.getTimeInMillis()); aValores[2] = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso(); aValores[3] = "N"; aCondiciones = new Object[2]; aCondiciones[0] = Integer.valueOf(((Usuario)sesion.getAttribute("USUARIO")).getMedico()); aCondiciones[1] = Integer.valueOf(((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad()); PersistenciaTamedico per = new PersistenciaTamedico(); per.modificarMedico(strSql.toString(), aValores, aCondiciones); } 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()); } } /** * Comprueba si es correcta o no la clave de usuario para el médico conectado. * @param codigo El código de usuario conectado. * @param clave La clave de usuario introducida en la página de cambio de password. * @param primerAcceso Indicador de si es la primera vez que se conecta el usuario, para cifrar o no la clave. * @return El valor booleano correspondiente a la existencia o no del registro. * @throws */ private boolean claveMedicoExiste(int medico, String clave, boolean primerAcceso) throws ExcepcionTarisan { boolean resultado = false; StringBuffer sqlSelect = new StringBuffer(); sqlSelect.append("SELECT * "); sqlSelect.append("FROM TAMEDICO "); sqlSelect.append("WHERE MEDICO = ? AND PASSWORD = ?"); try { Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); Object aCondiciones[] = new Object[2]; aCondiciones[0] = Integer.valueOf(medico); if(!primerAcceso) { aCondiciones[1] = Utilidades.encripta(clave, String.valueOf(medico)); } else { aCondiciones[1] = clave; } ResultSet rs = ParametrosConfiguracion.dataStore.seleccionar(conexion, sqlSelect.toString(), aCondiciones); while(rs.next()) { resultado = true; } rs.close(); ParametrosConfiguracion.dataStore.liberarConexion(conexion); LogTarisan.logger.log(NivelLog.DEBUG, "Comprueba la corrección de la clave del usuario " + medico + " en la tabla TAMEDICO (" + sqlSelect + ")"); } catch(SQLException sqle) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la comprobación de la corrección de la clave de usuario: " + sqle + " (" + sqlSelect + ")"); throw new ExcepcionTarisan(); } catch (ExcepcionTarisan ex) { resultado = false; LogTarisan.logger.log(NivelLog.ERROR, "Error en la comprobación de la corrección de la clave de usuario: " + ex.getMensaje() + " (" + sqlSelect + ")"); throw (ExcepcionTarisan)ex; } return resultado; } private void generarPDFPeticiones(HttpServletRequest request, HttpServletResponse response, HttpSession sesion, int tipoDoc) throws ExcepcionTarisan { try { SimpleDateFormat sdfFormateadorFecha=new SimpleDateFormat("dd/MM/yyyy"); java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime()); PersistenciaTapecap per = new PersistenciaTapecap(); int medico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico(); int intEspe = ((Usuario)sesion.getAttribute("USUARIO")).getEspecialidad(); PersistenciaTamedico perTame = new PersistenciaTamedico(); Tamedico tamedico = new Tamedico(); tamedico = perTame.seleccionar(medico); //Fecha de busqueda String strFecha = ""; if (request.getParameter("fec") != null) { strFecha =(String)request.getParameter("fec"); } Vector vSeleccion = per.imprimirPeticionesCapturadas(medico, strFecha, 1); Tapecap tapecap = null; tapecap = (Tapecap)vSeleccion.elementAt(0); String strFechaPeticiones = tapecap.getFecha().toString(); String dia=""; String mes=""; String anio=""; dia = strFechaPeticiones.substring(8, 10); mes = strFechaPeticiones.substring(5, 7); anio = strFechaPeticiones.substring(0, 4); String fechaBuena = dia+"/"+mes+"/"+anio; sdfFormateadorFecha = new SimpleDateFormat("dd/MM/yyyy"); //Creamos el documento Document document = new Document(); //Fijamos Márgenes document.setMargins(40, 40, 5, 5); // we create a writer that listens to the document String strFile = ""; if (intEspe == ParametrosConfiguracion.analiticas){ strFile = ParametrosConfiguracion.ruta_pdf_peticiones_analiticas_capturadas+((Usuario)sesion.getAttribute("USUARIO")).getMedico() + ".pdf"; }else if (intEspe == ParametrosConfiguracion.radiodiagnostico){ strFile = ParametrosConfiguracion.ruta_pdf_peticiones_rx_capturados+((Usuario)sesion.getAttribute("USUARIO")).getMedico() + ".pdf"; } FileOutputStream foStream = new FileOutputStream(strFile); PdfWriter writer = PdfWriter.getInstance(document,foStream); document.open(); Print print = new Print(); Font fuente1= new Font(); fuente1.setSize(12); //fuente1.setStyle(Font.BOLD); Font fuente2= new Font(); fuente2.setSize(8); Font fuente3= new Font(); fuente3.setSize(7); Font fuente4= new Font(); fuente4.setSize(10); //Definición de la tabla exterior PdfPTable tableExterior = new PdfPTable(2); //Numero de comlumnas de la tabla tableExterior.setWidthPercentage(100); float[] headerWidths={50,620}; //Tamaño(Anchura) de las columnas tableExterior.setWidths(headerWidths); // Fecha String txtFecha = fechaBuena; // Si desea crear una celda de mas de una columna. Cree un objecto Cell y cambie su propiedad span PdfPCell celdaFecha = new PdfPCell(new Paragraph(" FECHA: " + txtFecha,fuente4)); celdaFecha.setColspan(2); // Indicamos cuantas columnas ocupa la celda celdaFecha.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaFecha); // Titulo String strNom = ""; if (tamedico.getNombre()!=null){ strNom = ""+tamedico.getNombre(); } String strApe = ""; if (tamedico.getApellidos()!=null){ strApe = ""+tamedico.getApellidos(); } String txtMedico = strNom + " " + strApe; PdfPCell celdaTitulo = new PdfPCell(new Paragraph(txtMedico,fuente1)); celdaTitulo.setColspan(2); // Indicamos cuantas columnas ocupa la celda celdaTitulo.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaTitulo); //Celda en blanco PdfPCell celdaLibre = new PdfPCell(new Paragraph(" ",fuente1)); celdaLibre.setColspan(2); // Indicamos cuantas columnas ocupa la celda celdaLibre.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaLibre); // Peticiones aceptadas for(int i = 0; i < vSeleccion.size(); i++) { tapecap = (Tapecap)vSeleccion.elementAt(i); String strCodigo = "" + tapecap.getCodigo(); String strColec = ""; if (tapecap.getColectivo()!=-1){ strColec = ""+tapecap.getColectivo(); } String strBen = ""; if (tapecap.getOrden()!=-1){ strBen = ""+tapecap.getOrden(); } String iden = ""; if (tapecap.getIdentificador()!=null){ iden = ""+tapecap.getIdentificador(); } String pol = ""; if (tapecap.getPoliza()!=-1){ pol = ""+tapecap.getPoliza(); } String aut = ""; if (tapecap.getAutorizacion()!=-1){ aut = ""+tapecap.getAutorizacion(); } String strPrescriptor = ""; if (tapecap.getPrescriptor()!=null){ strPrescriptor = ""+tapecap.getPrescriptor(); } String strEspe = ""; if (tapecap.getEspecialidad()!=null){ strEspe = ""+tapecap.getEspecialidad(); } String strDireccion = ""; if (tapecap.getDireccion()!=null){ strDireccion = ""+tapecap.getDireccion(); } String strDni = ""; if (tapecap.getNif()!=null){ strDni = ""+tapecap.getNif(); } String strNobre = ""; if (tapecap.getNombre()!=null){ strNobre = ""+tapecap.getNombre(); } String strApellidos = ""; if (tapecap.getApellidos()!=null){ strApellidos = ""+tapecap.getApellidos(); } String strCompania = ""; if (tapecap.getCompania()!=null){ strCompania = ""+tapecap.getCompania(); } String strTelefono = ""; if (tapecap.getTelefono()!=null){ strTelefono = ""+tapecap.getTelefono(); } String fechaNac = ""; if (tapecap.getFecha_nac()!=null){ fechaNac = ""+tapecap.getFecha_nac(); String d = ""; String m = ""; String a = ""; d = fechaNac.substring(8, 10); m = fechaNac.substring(5, 7); a = fechaNac.substring(0, 4); fechaNac = d+"/"+m+"/"+a; } String strColPolOrd = ""; if((tapecap.getColectivo()!=-1)||(tapecap.getPoliza()!=-1)||(tapecap.getOrden()!=-1)){ strColPolOrd = strColec + " - " + pol + " - " + strBen; } PdfPTable tableInterior = new PdfPTable(2); float[] headerWidths2={350,300}; //Tamaño(Anchura) de las columnas tableInterior.setWidths(headerWidths2); tableInterior.getDefaultCell().setBorder(PdfPCell.NO_BORDER); tableInterior.addCell(new Paragraph("NOMBRE: " + strNobre.trim() + " " + strApellidos.trim(),fuente2)); tableInterior.addCell(new Paragraph("COMPAÑIA: " + strCompania.trim(),fuente2)); tableInterior.addCell(new Paragraph("DIRECción: " + strDireccion.trim(),fuente2)); tableInterior.addCell(new Paragraph("Nº PÓLIZA: " + strColPolOrd,fuente2)); tableInterior.addCell(new Paragraph("FECHA NACIMIENTO: " + fechaNac,fuente2)); tableInterior.addCell(new Paragraph("AUTORIZAción: " + aut,fuente2)); tableInterior.addCell(new Paragraph("DNI: " + strDni,fuente2)); tableInterior.addCell(new Paragraph("PETICIONARIO: DR(a). " + strPrescriptor.trim(),fuente2)); tableInterior.addCell(new Paragraph("TELEFONO: " + strTelefono,fuente2)); tableInterior.addCell(new Paragraph("ESPECIALIDAD: " + strEspe.trim(),fuente2)); tableInterior.addCell(new Paragraph("TARJETA: " + iden,fuente2)); tableInterior.addCell(new Paragraph("",fuente2)); PdfPTable tableCodigo = new PdfPTable(1); tableCodigo.getDefaultCell().setBorder(PdfPCell.NO_BORDER); tableCodigo.addCell(new Paragraph("CODIGO",fuente3)); tableCodigo.addCell(new Paragraph(" ",fuente3)); tableCodigo.addCell(new Paragraph(" " + strCodigo,fuente1)); tableExterior.addCell(tableCodigo); tableExterior.addCell(tableInterior); } 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()); } } private void generarPDF_IRPF(HttpServletRequest request, HttpServletResponse response, HttpSession sesion, int tipoDoc) throws ExcepcionTarisan { try { /*SimpleDateFormat sdfFormateadorFecha=new SimpleDateFormat("dd/MM/yyyy");*/ java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime()); PersistenciaTadremed per = new PersistenciaTadremed(); int medico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico(); PersistenciaTamedico perTame = new PersistenciaTamedico(); Tamedico tamedico = new Tamedico(); tamedico = perTame.seleccionar(medico); //año de búsqueda String strAnio = ""; if (request.getParameter("anio") != null) { strAnio =(String)request.getParameter("anio"); } Vector vSeleccion = per.ObtenerTotalesIrpf(medico, strAnio); Tadremed tadremed = null; tadremed = (Tadremed)vSeleccion.elementAt(0); String strFechaHoy = dtFecha.toString(); String dia=""; String mes=""; String anio=""; dia = strFechaHoy.substring(8, 10); mes = strFechaHoy.substring(5, 7); anio = strFechaHoy.substring(0, 4); String mesEscrito = ""; switch (Integer.parseInt(mes)) { case 1: mesEscrito = "Enero"; break; case 2: mesEscrito = "Febrero"; break; case 3: mesEscrito = "Marzo"; break; case 4: mesEscrito = "Abril"; break; case 5: mesEscrito = "Mayo"; break; case 6: mesEscrito = "Junio"; break; case 7: mesEscrito = "Julio"; break; case 8: mesEscrito = "Agosto"; break; case 9: mesEscrito = "Septiembre"; break; case 10: mesEscrito = "Octubre"; break; case 11: mesEscrito = "Noviembre"; break; case 12: mesEscrito = "Diciembre"; break; } /*sdfFormateadorFecha = new SimpleDateFormat("dd/MM/yyyy");*/ Document document = new Document(); document.setMargins(70, 70, 5, 5); String strFile = ""; strFile = ParametrosConfiguracion.ruta_pdf_irpf+((Usuario)sesion.getAttribute("USUARIO")).getMedico() + "_" + strAnio + ".pdf"; FileOutputStream foStream = new FileOutputStream(strFile); PdfWriter writer = PdfWriter.getInstance(document,foStream); document.open(); /*Print print = new Print();*/ String rutaRaleway = this.getServletContext().getRealPath(File.separator)+"fonts/Raleway-Light.ttf"; String rutaRalewayNegrita = this.getServletContext().getRealPath(File.separator)+"fonts/Raleway-Bold.ttf"; BaseFont raleway = BaseFont.createFont(rutaRaleway, BaseFont.WINANSI, BaseFont.EMBEDDED); BaseFont ralewayNegrita = BaseFont.createFont(rutaRalewayNegrita, BaseFont.WINANSI, BaseFont.EMBEDDED); Font fuente1= new Font(ralewayNegrita); fuente1.setSize(11); /*fuente1.setStyle(Font.BOLD);*/ Font fuente2= new Font(raleway); fuente2.setSize(11); /*fuente2.setFamily("HELVETIA");*/ //Definición de la tabla exterior PdfPTable tableExterior = new PdfPTable(2); //Numero de comlumnas de la tabla tableExterior.getDefaultCell().setBorder(PdfPCell.NO_BORDER); tableExterior.setWidthPercentage(100); float[] headerWidths={50,620}; //Tamaño(Anchura) de las columnas tableExterior.setWidths(headerWidths); //Celda en blanco PdfPCell celdaLibre = new PdfPCell(new Paragraph(" ",fuente1)); celdaLibre.setColspan(2); // Indicamos cuantas columnas ocupa la celda celdaLibre.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); // Titulo Margen Derecho String strNom = ""; if (tamedico.getNombre()!=null){ strNom = ""+tamedico.getNombre(); strNom = strNom.trim(); } String strApe = ""; if (tamedico.getApellidos()!=null){ strApe = ""+tamedico.getApellidos(); strApe = strApe.trim(); } String strDireccion = ""; if (tamedico.getDireccionCab()!=null){ strDireccion = ""+tamedico.getDireccionCab(); } String strCp = ""; if (tamedico.getCpCab() != 0){ strCp = ""+tamedico.getCpCab() + " - "; } String strPoblacion = ""; if (tamedico.getPoblacionCab()!=null){ strPoblacion = ""+tamedico.getPoblacionCab(); } String NombreCompleto = strNom + " " + strApe; // Si desea crear una celda de mas de una columna. Cree un objecto Cell y cambie su propiedad span PdfPCell celdaNombre = new PdfPCell(new Paragraph(" " + NombreCompleto,fuente2)); celdaNombre.setColspan(2); // Indicamos cuantas columnas ocupa la celda celdaNombre.setBorder(PdfPCell.NO_BORDER); PdfPCell celdaDireccion = new PdfPCell(new Paragraph(" " + strDireccion,fuente2)); celdaDireccion.setColspan(2); celdaDireccion.setBorder(PdfPCell.NO_BORDER); PdfPCell celdaPoblacion = new PdfPCell(new Paragraph(" " + strCp + strPoblacion,fuente2)); celdaPoblacion.setColspan(2); celdaPoblacion.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaNombre); tableExterior.addCell(celdaDireccion); tableExterior.addCell(celdaPoblacion); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); String textoA1= "D. DANIEL CAMARA BAZTAN, con DNI 72.805.898 L, Director General de"; String textoA2= "IGUALATORIO Médico DE NAVARRA, S.A., con NIF A-31005432 y con domicilio en"; String textoA3= "Pamplona, Avenida Bayona, 4 - Bajo,"; PdfPCell celdaTexto1 = new PdfPCell(new Paragraph(textoA1,fuente1)); celdaTexto1.setColspan(2); celdaTexto1.setBorder(PdfPCell.NO_BORDER); PdfPCell celdaTexto2 = new PdfPCell(new Paragraph(textoA2,fuente1)); celdaTexto2.setColspan(2); celdaTexto2.setBorder(PdfPCell.NO_BORDER); PdfPCell celdaTexto3 = new PdfPCell(new Paragraph(" "+textoA3,fuente1)); celdaTexto3.setColspan(2); celdaTexto3.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaTexto1); tableExterior.addCell(celdaTexto2); tableExterior.addCell(celdaTexto3); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); PdfPCell celdaCertifico = new PdfPCell(new Paragraph("C E R T I F I C O:",fuente1)); celdaCertifico.setColspan(2); celdaCertifico.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaCertifico); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); Phrase parte1=new Phrase("Que, ",fuente2); Phrase parte2=new Phrase(NombreCompleto,fuente1); Phrase parte3=new Phrase(" ha percibido durante el ejercicio del año ",fuente2); Phrase parte4=new Phrase(strAnio,fuente1); Phrase parte5=new Phrase(" en concepto de Honorarios Médicos, la cantidad de:",fuente2); Phrase lineaEntera=new Phrase(); lineaEntera.add(parte1); lineaEntera.add(parte2); lineaEntera.add(parte3); lineaEntera.add(parte4); lineaEntera.add(parte5); lineaEntera.setLeading(40); PdfPCell celdaTextoB1 = new PdfPCell(lineaEntera); celdaTextoB1.setLeading(15f, 0f); /*celdaTextoB1.setIndent(50f);*/ celdaTextoB1.setColspan(2); celdaTextoB1.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaTextoB1); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); PdfPCell celdaTotal = new PdfPCell(new Paragraph("Total bruto: "+ tadremed.getImporteTotal() + " €",fuente1)); celdaTotal.setColspan(2); celdaTotal.setBorder(PdfPCell.NO_BORDER); PdfPCell celdaRetencion = new PdfPCell(new Paragraph("Retención: "+ tadremed.getIrpfTotal() + " €",fuente1)); celdaRetencion.setColspan(2); celdaRetencion.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaTotal); tableExterior.addCell(celdaRetencion); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); String textoC1 = "Y para que conste y sirva de justificante al interesado ante la Delegación de Hacienda"; String textoC2 = "expido el presente certificado en Pamplona a "+dia+" de "+mesEscrito+" de "+anio+"."; PdfPCell celdaTextoC1 = new PdfPCell(new Paragraph(textoC1,fuente2)); celdaTextoC1.setColspan(2); celdaTextoC1.setBorder(PdfPCell.NO_BORDER); PdfPCell celdaTextoC2 = new PdfPCell(new Paragraph(textoC2,fuente2)); celdaTextoC2.setColspan(2); celdaTextoC2.setBorder(PdfPCell.NO_BORDER); tableExterior.addCell(celdaTextoC1); tableExterior.addCell(celdaTextoC2); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); tableExterior.addCell(celdaLibre); document.add(tableExterior); /*Image imagen = Image.getInstance("/root/apache-tomcat-6.0.20/webapps/tarisan/img/firma.jpg"); */ Image imagen = Image.getInstance(ParametrosConfiguracion.ruta_img+"firma_daniel.png"); imagen.setAlignment(Element.ALIGN_CENTER); imagen.scaleAbsolute(120, 100); document.add(imagen); document.close(); } catch (Exception ex) { System.out.println("Excepcion" + ex); LogTarisan.logger.log(NivelLog.ERROR, "Excepcion al generarPDF: "+ex.toString()); } } private void introducirPacientePeticion(HttpServletRequest request, HttpServletResponse response, HttpSession sesion) throws ExcepcionTarisan { Object[] aValores=null; Object[] aCondiciones=null; StringBuffer strSql; try { PersistenciaTareglog perTareglog = new PersistenciaTareglog(); PersistenciaTapecap perTapecap = new PersistenciaTapecap(); //obtenemos los datos del medico y del paciente long longAutorizacion = Long.parseLong( (String)request.getParameter("autorizacion") ); String strApellidos = (String)request.getParameter("apellidos"); String strNombre = (String)request.getParameter("nombre"); String strNif = (String)request.getParameter("dni"); String strDireccion = (String)request.getParameter("direccion"); String strFechaNac = (String)request.getParameter("fec_nac"); String strTelefono = (String)request.getParameter("telefono"); String strCompania = (String)request.getParameter("compania"); String strIdentificador = (String)request.getParameter("identificador"); int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico(); String strPrescriptor = (String)request.getParameter("medico"); String strEspecialidad = (String)request.getParameter("espe"); java.sql.Date dtFecha = new java.sql.Date(Calendar.getInstance().getTime().getTime()); Calendar fecha = Calendar.getInstance(); Timestamp fechaAcceso = new Timestamp(fecha.getTimeInMillis()); Timestamp tsFechaUltimoAcceso = ((Usuario)sesion.getAttribute("USUARIO")).getFechaUltAcceso(); /*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 correlativo de la tabla tareglog. //Este campo es un numero correlativo utilizado para diferenciar las claves. int intUltimoValorCorrelativo = perTareglog.obtenerUltimoValorCorrelativo(intMedico, tsFechaUltimoAcceso); //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. int intUltimoValorCodigo = perTapecap.obtenerUltimoCodigo(intMedico); /*if (perTapecap.existePaciente(intMedico, strIdentificador)){ int num = 0; strCodigo = perTapecap.obtenerUltimoCodigoMismoPaciente(intMedico,strIdentificador); 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; } }*/ /*double intUltimoValorCodigo = 0; if (perTapecap.existePaciente(intMedico, strIdentificador)){ intUltimoValorCodigo = perTapecap.obtenerUltimoCodigoMismoPaciente(intMedico,strIdentificador); intUltimoValorCodigo = intUltimoValorCodigo+ (0.1); }else{ intUltimoValorCodigo = perTapecap.obtenerUltimoCodigo(intMedico); intUltimoValorCodigo = intUltimoValorCodigo+1; }*/ Connection conexion = ParametrosConfiguracion.dataStore.obtenerConexion(); ParametrosConfiguracion.dataStore.iniciarTransaccion(conexion); try { //introducimos un nuevo registro en la tabla tapecap 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, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? FROM DUAL"); //cargamos el array aValores = new Object[17]; aValores[0] = intUltimoValorCodigo; aValores[1] = (String)Utilidades.formatear_fecha(dtFecha); aValores[2] = (String)strApellidos; aValores[3] = (String)strNombre; aValores[4] = (String)strNif; aValores[5] = (String)strDireccion; aValores[6] = (String)strFechaNac; aValores[7] = (String)strTelefono; aValores[8] = (String)strCompania; aValores[9] = strIdentificador; aValores[10] = intMedico; aValores[11] = longAutorizacion; aValores[12] = strPrescriptor; aValores[13] = strEspecialidad; aValores[14] = -1; aValores[15] = -1; aValores[16] = -1; perTapecap.insertarPeticionCapturada(strSql.toString(), aValores, conexion); perTareglog.insertarLog(intMedico, fechaAcceso, Calendar.getInstance(), intUltimoValorCorrelativo+1, "TAPECAP", Utilidades.obtenerSentenciaSQL(strSql, aValores, null), "", conexion); intUltimoValorCorrelativo++; //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()); } } }