Files
tarisan_gitea/jsp/pac/facturacion_iguala.jsp
T
2025-06-09 13:55:08 +02:00

600 lines
23 KiB
Plaintext

<%@ page import="com.tarisan.control.*" %>
<%@ page import="com.tarisan.data.*" %>
<%@ page import="com.tarisan.excepcion.*" %>
<%@ page import="com.tarisan.log.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Vector" %>
<%@ page import="com.tarisan.util.Utilidades" %>
<%@ page import="com.tarisan.persistencia.PersistenciaParametros" %>
<%
//LogTarisan.logger.log(NivelLog.INFO, "Inicio página de facturacion_iguala (pac/facturacion_iguala.jsp)");
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.INFO, "Sesión invalidada");
response.sendRedirect(request.getContextPath() + "/html/login.html");
}
else
{
LogTarisan.logger.log(NivelLog.INFO, ((Usuario)sesion.getAttribute("USUARIO")).getMedico() + " - Inicio página de facturacion_iguala (pac/facturacion_iguala.jsp)");
try
{
// Definicion de variables
String strMensajeSinElementos="No ha seleccionado ningún acto médico.";
String strParametroMenu="";
String strCampoNombre="";
String strListaElementos="";
String strListaCodigoElementos="";
int intImpresion = 0;
int intPagina = 0;
StringBuffer strSql = new StringBuffer();
Object aCondiciones[]=null;
String strEsPrimeraVisita = "";
String strListaElementosPrescripcion = "";
//Obtención del perfil del usuario conectado
StringBuffer perfil = new StringBuffer();
perfil.append("|");
perfil.append(sesion.getAttribute("PERFIL"));
perfil.append("|");
//Obtenemos los valores de los parametros que se pasan a la pagina
//En caso de que no se le pasen parametros, quedaram inicializados
//a sus valores por defecto
//parametro x para marcar la opcion del menu en la que se encuentra el usuario
if (request.getParameter("x")!=null)
strParametroMenu=(String)request.getParameter("x");
//parametro descripcion para las busquedas
if (request.getParameter("nombre")!=null)
strCampoNombre = (String)request.getParameter("nombre");
//parametro pagina para realizar la paginacion
if (request.getParameter("pagina")!=null)
intPagina=Integer.parseInt(request.getParameter("pagina"));
//parametro listaPrescripciones para mostrar las prescripciones seleccionadas
if (request.getParameter("listaElementos")!=null)
strListaElementos=(String)request.getParameter("listaElementos");
//parametro listaPrescripciones para mostrar las prescripciones seleccionadas
if (request.getParameter("listaCodigoElementos")!=null)
strListaCodigoElementos=(String)request.getParameter("listaCodigoElementos");
//parametro listaElementosPrescripciones utilizado para realizar la impresion
if (request.getParameter("listaElementosPrescripcion")!=null)
strListaElementosPrescripcion=(String)request.getParameter("listaElementosPrescripcion");
//parametro impresion que nos indica que se ha de realizar una impresion
if (request.getParameter("imp")!=null) {
intImpresion=Integer.parseInt(request.getParameter("imp"));
}
int intMedico = ((Usuario)sesion.getAttribute("USUARIO")).getMedico();
long intColectivo = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getColectivo();
int intBeneficiario = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getBeneficiario();
double dblPoliza = ((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta().getPoliza();
PersistenciaTaprimer perTaprimer = new PersistenciaTaprimer();
if (perTaprimer.esPrimeraVisita( intMedico, intColectivo, dblPoliza, intBeneficiario) )
strEsPrimeraVisita = "si";
else
strEsPrimeraVisita = "no";
Tamensaje tamensaje = new Tamensaje();
PersistenciaTamensaje pertamensaje = new PersistenciaTamensaje();
boolean mostrarNoticia = true;
PersistenciaTanoticias perTaNo = new PersistenciaTanoticias();
Vector vSeleccionNot = perTaNo.obtener_noticias_cabecera();
Vector vNoticias = new Vector();
String strNoticia = "";
String noticias ="";
String separador = " ---//--- ";
if(vSeleccionNot.size()==0){
mostrarNoticia = false;
}else{
mostrarNoticia = true;
Tanoticias tanoticia = null;
for(int i = 0; i < vSeleccionNot.size(); i++)
{
tanoticia = (Tanoticias)vSeleccionNot.elementAt(i);
if (i!=0){
strNoticia = strNoticia + separador + tanoticia.getNoticia();
}else{
strNoticia = tanoticia.getNoticia();
}
strNoticia = strNoticia.replaceAll("<br/>", " ");
}
}
%>
<html>
<head>
<title>Especialidades</title>
<link rel="shortcut icon" href="<%=request.getContextPath()%>/img/logo.ico" />
<link rel="STYLESHEET" type="text/css" href="<%=request.getContextPath()%>/css/estilos.css">
<link rel="STYLESHEET" type="text/css" href="<%=request.getContextPath()%>/css/jquery.modal.css">
<script language="JavaScript" src="<%=request.getContextPath()%>/js/imprimir.js"></script>
<script language="JavaScript" src="<%=request.getContextPath()%>/js/inicio_tarisan.js"></script>
<script language="JavaScript" src="<%=request.getContextPath()%>/js/menu_pac_iguala.js"></script>
<script language="JavaScript" src="<%=request.getContextPath()%>/js/bloques_tarisan.js"></script>
<script language="JavaScript" src="../../js/funciones.js"></script>
<script language="JavaScript" src="../../js/jquery-1.11.3.js"></script>
<script language="JavaScript" src="<%=request.getContextPath()%>/js/jquery.modal.min.js"></script>
<script language="JavaScript">pNG="<%= perfil.toString() %>"</script>
<script language="JavaScript" type="text/javascript">
<!--
//********************************************************************************************************************
//********************************************************************************************************************
//FUNCIONES UTILIZADAS PARA EL TRATAMIENTO DE LA SELECCION DE LOS CHECKBOXES DE LA GESTION DE PACIENTES
//********************************************************************************************************************
//********************************************************************************************************************
var mensajeSinElementos = "<%=strMensajeSinElementos%>";
var vElementos = new Array();
var vCodigoElementos = new Array();
var intNumeroCheckBoxes = 0;
var esPrimeraVisita = '<%=strEsPrimeraVisita%>';
var codigoPrimeraVisita = <%=ParametrosConfiguracion.codigoPrimeraVisita%>
var codigoVisitaSucesiva = <%=ParametrosConfiguracion.codigoVisitaSucesiva%>
function comprobarImpresion(impresion)
{
if (impresion==1) { //se efectua la impresion
//VentanaImpresion('<%=request.getContextPath()%>','<%=request.getContextPath()%>/jsp/imp/impFacturacion.jsp');
//window.open('https://infor-roumenov/tarisan/peticiones/Fact_<%=((Usuario)sesion.getAttribute("USUARIO")).getMedico()%>.pdf');
//var ventanaFact = window.open('<%=request.getContextPath()%>/peticiones/Fact_<%=((Usuario)sesion.getAttribute("USUARIO")).getMedico()%>.pdf',"Impresion","dependent=1,height=490,width=720,left=150,top=100,menubar=no,scrollbars=yes,resizable=yes,location=no,status=no,toolbar=no,directories=no");
document.frmImprimirPeticion.nombrePDF.value = "<%=((Usuario)sesion.getAttribute("USUARIO")).getMedico()+"_"+((Tarjeta)((Paciente)sesion.getAttribute("PACIENTE")).getTarjeta()).getPoliza()%>.pdf";
document.frmImprimirPeticion.submit();
}
}
function anular()
{
vElementos = new Array();
escribirListaElementos();
vCodigoElementos = new Array();
//limpiamos la seleccion de las checkboxes
for (var i=0;i<intNumeroCheckBoxes;i++)
eval("document.frmFacturacion.checkbox" + i + ".checked=false");
document.frmPrescripcion.listaElementosPrescripcion.value="";
document.frmPrescripcion.listaCodigoElementosPrescripcion.value="";
document.frmFacturacion.listaElementos.value="";
document.frmFacturacion.listaCodigoElementos.value="";
}
function imprimir()
{
prepararEnvioFormListaElementos(document.frmPrescripcion.listaElementosPrescripcion, document.frmPrescripcion.listaCodigoElementosPrescripcion);
if (document.frmPrescripcion.listaElementosPrescripcion.value==""){
//alert("Debe seleccionar algún elemento para realizar la prescripción.");
modal({type:'error',title:'¡Atención!',text:'Debe seleccionar algún elemento para realizar la prescripción.',});
}
else
{
document.frmPrescripcion.submit();
}
}
function prepararEnvioFormListaElementos(campoElementos, campoCodigoElementos)
{
var textoElementos="";
var textoCodigoElementos="";
if (vElementos.length>0) //array con elementos
{
//preparamos la lista de descripciones
for (var i=0; i<vElementos.length; i++)
{
textoElementos+= "¬" + vElementos[i];
}
textoElementos+="¬";
}
campoElementos.value=textoElementos;
if (vCodigoElementos.length>0) //array con elementos
{
//preparamos la lista de codigos
for (var i=0; i<vCodigoElementos.length; i++)
{
textoCodigoElementos+= "¬" + vCodigoElementos[i];
}
textoCodigoElementos+= "¬";
}
campoCodigoElementos.value=textoCodigoElementos;
}
function inicializarListaElementos()
{
//preparamos la lista de descripciones
//Quitamos las comillas simples para que al asignar el valor de la lista de elementos
//no kaske, ya que en esa asignacion se utiliza comillas simples
<%
String strListaElementosAux=strListaElementos.replace('\'', '~');
%>
//cogemos los valores de la lista sin comillas simples
var lstElementos = '<%=strListaElementosAux%>';
//restauramos las comillas simples para ponerlos con su valor original en el array de elementos
while(lstElementos.indexOf("~")!=-1)
lstElementos = lstElementos.replace("~", "'");
//inicializamos el array de elementos con sus valores originales
var i=0;
if (lstElementos!="") //la lista no esta vacia
{
//quitamos el primer caracter separador
lstElementos=lstElementos.substring(lstElementos.indexOf("¬") + 1);
while (lstElementos.indexOf("¬")!=-1)
{
vElementos[i] = lstElementos.substring(0, lstElementos.indexOf("¬"));
lstElementos=lstElementos.substring(lstElementos.indexOf("¬") + 1);
i++;
}
}
//preparamos la lista de codigos
//cogemos los valores de la lista de codigos
var lstCodigoElementos = '<%=strListaCodigoElementos%>';
//inicializamos el array de elementos con sus valores
var i=0;
if (lstCodigoElementos!="") //la lista no esta vacia
{
//quitamos el primer caracter separador
lstCodigoElementos=lstCodigoElementos.substring(lstCodigoElementos.indexOf("¬") + 1);
while (lstCodigoElementos.indexOf("¬")!=-1)
{
vCodigoElementos[i] = lstCodigoElementos.substring(0, lstCodigoElementos.indexOf("¬"));
lstCodigoElementos=lstCodigoElementos.substring(lstCodigoElementos.indexOf("¬") + 1);
i++;
}
}
prepararEnvioFormListaElementos(document.frmFacturacion.listaElementos, document.frmFacturacion.listaCodigoElementos);
escribirListaElementos();
}
function aniadirElemento(elemento, codigoElemento)
{
var elementoConComillaSimple=elemento;
//añadimos descripcion elemento
//En caso de que el elemento tenga el caracter (~), se sustituye por una comilla simple (')
//para mostrarlo correctamente. En el array se almacenan los valores reales, con comillas simples.
//El elemento viene con ese caracter especial que sustituye a la comilla simple, porque si no, a la hora de
//asignar el valor original a la propiedad value del checkbox, si el valor original contiene ', kaska. Pensara que es
//final de string. Para evitar eso, antes de asignar a la propiedad value remplazamos la comilla por ese valor especial.
while(elementoConComillaSimple.indexOf("~")!=-1)
elementoConComillaSimple = elementoConComillaSimple.replace("~", "'");
vElementos[vElementos.length]=elementoConComillaSimple;
//añadimos codigo elemento
vCodigoElementos[vCodigoElementos.length]=codigoElemento;
}
function eliminarElemento(elemento, codigoElemento)
{
var elementoConComillaSimple=elemento;
var vNuevosElementos=new Array();
var vNuevosCodigoElementos=new Array();
var j=0;
//eliminamos descripcion elemento
//En caso de que el elemento tenga tenga el caracter (~), se sustituye por una comilla simple (')
//ya que en el array se almacenan los valores reales, con comillas simples.
while(elementoConComillaSimple.indexOf("~")!=-1)
elementoConComillaSimple = elementoConComillaSimple.replace("~", "'");
for (var i=0; i<vElementos.length; i++)
{
if(vElementos[i]!=elementoConComillaSimple)
{
vNuevosElementos[j]=vElementos[i];
j++;
}
}
vElementos = vNuevosElementos;
//eliminamos codigo elemento
j=0;
for (var i=0; i<vCodigoElementos.length; i++)
{
if(vCodigoElementos[i]!=codigoElemento)
{
vNuevosCodigoElementos[j]=vCodigoElementos[i];
j++;
}
}
vCodigoElementos = vNuevosCodigoElementos;
}
function escribirListaElementos()
{
var texto="<table border='0' cellpadding='0' cellspacing='0'>";
if (vElementos.length==0) //no hay ningun elemento
texto+= "<tr><td class='txt'>" + mensajeSinElementos + "</td></tr>";
else //hay algun elemento
{
for (var i=0; i<vElementos.length; i++)
{
texto+= "<tr><td class='txtNegrita' valign='top'>-&nbsp;</td><td class='txt'>" + vElementos[i] + "</td></tr>";
}
}
texto = texto + "</table>";
//escribimos la lista de elementos dependiendo del navegador
if (document.all)
{
document.all['elementos'].innerHTML = texto;
}
else if (document.getElementById)
{
document.getElementById('elementos').innerHTML = texto;
}
else if (document.layers)
{
texto = "<layer top='0' left='0'>"+texto+"</layer>";
document.layers['elementos'].document.open();
document.layers['elementos'].document.write(texto);
document.layers['elementos'].document.close();
}
}
function tratarCheckBox(checkbox, codigoElemento)
{
if (vElementos.length>=5) //hay seleccionados 5 elementos. No puede seleccionar mas elementos.
{
if (checkbox.checked==true) //se selecciona una prescripcion
{
checkbox.checked=false;
//alert("No puede imputarse más actos médicos");
modal({type:'error',title:'¡Atención!',text:'No puede imputarse más actos médicos.',});
}
else //se quita la seleccion de una prescripcion
{
eliminarElemento(checkbox.value, codigoElemento);
prepararEnvioFormListaElementos(document.frmFacturacion.listaElementos, document.frmFacturacion.listaCodigoElementos);
escribirListaElementos();
}
}
else //tiene seleccionados menos que 5 elementos. Le dejamos que seleccione sin ningun problema.
{
if (checkbox.checked==true) //se selecciona una prescripcion
{
//comprobamos si se permite seleccionar la primera visita o la visita sucesiva
//(codigoElemento == codigoPrimeraVisita && esPrimeraVisita == "no") || (codigoElemento == codigoVisitaSucesiva && esPrimeraVisita == "si")
if ( codigoElemento == codigoPrimeraVisita && esPrimeraVisita == "no" ) //selecciona primera visita y no es la primera visita o seleciona la visita sucesiva y es primera vista
{
checkbox.checked=false;
//alert("Imposible imputarse ese acto médico.");
modal({type:'error',title:'¡Atención!',text:'Imposible imputarse ese acto médico.',});
}
else
aniadirElemento(checkbox.value, codigoElemento);
}
else
eliminarElemento(checkbox.value, codigoElemento);
prepararEnvioFormListaElementos(document.frmFacturacion.listaElementos, document.frmFacturacion.listaCodigoElementos);
escribirListaElementos();
}
}
//********************************************************************************************************************
//********************************************************************************************************************
//FUNCIONES UTILIZADAS PARA EL TRATAMIENTO DE LA SELECCION DE LOS CHECKBOXES DE LA GESTION DE PACIENTES
//********************************************************************************************************************
//********************************************************************************************************************
//********************************************************************************************************************
//********************************************************************************************************************
//FUNCION UTILIZADA DESE LA PANTALLA DE IMPRESION PARA OBTENER LA LISTA DE ELEMENTOS
//********************************************************************************************************************
//********************************************************************************************************************
function obtenerArrayListaElementosPrescripcion()
{
//preparamos la lista de descripciones
//Quitamos las comillas simples para que al asignar el valor de la lista de elementos
//no kaske, ya que en esa asignacion se utiliza comillas simples
<%
String strListaElementosPrescripcionAux=strListaElementosPrescripcion.replace('\'', '~');
%>
//cogemos los valores de la lista sin comillas simples
var lstElementosPrescripcion = '<%=strListaElementosPrescripcionAux%>';
//restauramos las comillas simples para ponerlos con su valor original en el array de elementos
while(lstElementosPrescripcion.indexOf("~")!=-1)
lstElementosPrescripcion = lstElementosPrescripcion.replace("~", "'");
//inicializamos el array de elementos con sus valores originales
var i=0;
var vElementosPrescripcion = new Array();
if (lstElementosPrescripcion!="") //la lista no esta vacia
{
//quitamos el primer caracter separador
lstElementosPrescripcion=lstElementosPrescripcion.substring(lstElementosPrescripcion.indexOf("¬") + 1);
while (lstElementosPrescripcion.indexOf("¬")!=-1)
{
vElementosPrescripcion[i] = lstElementosPrescripcion.substring(0, lstElementosPrescripcion.indexOf("¬"));
lstElementosPrescripcion=lstElementosPrescripcion.substring(lstElementosPrescripcion.indexOf("¬") + 1);
i++;
}
}
return vElementosPrescripcion;
}
//********************************************************************************************************************
//********************************************************************************************************************
//FUNCION UTILIZADA DESE LA PANTALLA DE IMPRESION PARA OBTENER LA LISTA DE ELEMENTOS
//********************************************************************************************************************
//********************************************************************************************************************
function informarParametroCampoBusqueda()
{
//Quitamos las comillas simples para que al asignar el valor del campo de busqueda
//no kaske, ya que en esa asignacion se utiliza comillas simples
<%
String strCampoNombreAux=strCampoNombre.replace('\'', '~');
%>
//cogemos el valor del campo de busqueda sin comillas simples
var lstCampoBusqueda = '<%=strCampoNombreAux%>';
//restauramos las comillas simples para ponerlos con su valor original en campo de busqueda
while(lstCampoBusqueda.indexOf("~")!=-1)
lstCampoBusqueda = lstCampoBusqueda.replace("~", "'");
document.frmFacturacion.nombre.value=lstCampoBusqueda;
}
function pasarAMayusculas(campo)
{
campo.value=campo.value.toUpperCase();
}
function buscar()
{
prepararEnvioFormListaElementos(document.frmFacturacion.listaElementos, document.frmFacturacion.listaCodigoElementos);
document.frmFacturacion.pagina.value=1;
pasarAMayusculas(document.frmFacturacion.nombre);
document.frmFacturacion.submit();
}
function paginacion(pagina)
{
prepararEnvioFormListaElementos(document.frmFacturacion.listaElementos, document.frmFacturacion.listaCodigoElementos);
document.frmFacturacion.pagina.value=pagina;
pasarAMayusculas(document.frmFacturacion.nombre);
document.frmFacturacion.submit();
}
//-->
</script>
</head>
<body marginwidth="0" marginheight="0" leftmargin="0" topmargin="0" alink="#43881A" bgcolor="#FFFFFF" onload="javascript:inicializarListaElementos();informarParametroCampoBusqueda();comprobarImpresion(<%=intImpresion%>)">
<div class="marco">
<!-- Datos del usuario conectado //-->
<table cellpadding="0" cellspacing="0" border="0" align="center" style="width:95%">
<tr>
<td class="tdLogoCabecera"><img src="<%=request.getContextPath()%>/img/logo.png" class="logoCabecera"></td>
<td>
<table width="100%">
<tr><td class="tituloTablaMedico" align="center"><%= sesion.getAttribute("USUARIO") %></td></tr>
<tr>
<td>
<div id="contenedorNoticia">
<br>
<div class="tituloNoticia">
<p class="marquee"><%=strNoticia %></p>
</div>
</div>
</td>
</tr>
</table>
</td>
</tr>
<!-- Cabecera de Navegación superior //-->
<table cellpadding="0" cellspacing="0" border="0" align="center" style="width:95%">
<tr>
<td><script language="JavaScript">bloques();</script></td>
</tr>
</table>
<br>
<!-- Datos del paciente introducido mediante la lectura de la tarjeta //-->
<table cellpadding="0" cellspacing="0" border="0" align="center" style="width:95%">
<tr>
<td class="tituloTabla" align="center"><%= sesion.getAttribute("PACIENTE") %></td>
</tr>
</table>
<br>
<!-- Cuerpo de la página //-->
<table cellpadding="0" cellspacing="0" border="0" align="center" style="width:95%">
<tr valign="top">
<td width="5%">
<!-- Menú de navegación del módulo (zona izquierda) //-->
<table cellpadding="0" cellspacing="0" border="0">
<tr valign="top">
<td colspan="2"><img src="<%=request.getContextPath()%>/img/sp.gif" width="180" height="12" border="0"></td>
</tr>
<tr valign="top">
<td><script language="JavaScript">escribirMenuGst();</script></td>
</tr>
</table>
</td>
<td width="565">
<%=pertamensaje.obtenerMensaje(12).getMensaje() %>
</td>
</tr>
</table>
</div>
<form name="frmImprimirPeticion" action="<%=request.getContextPath()%>/servlet/GestorPacientes" target="blank" method="post" style="width:50%;margin-bottom: 0px">
<input type="hidden" name="tipo" value="11"/>
<input type="hidden" name="nombrePDF" value="" />
<input type="hidden" name="OPCION" value="<%=Constantes.OPC_PAC_VER_PDF%>">
</form>
</body>
</html>
<script>
var jsMostrarNoticia = <%=mostrarNoticia %>;
if (!jsMostrarNoticia){
document.getElementById('contenedorNoticia').style.display="none";
}else{
<% strNoticia = strNoticia.replaceAll("\"", "'"); %>
var not = "<%=strNoticia %>";
tamanioNoticia(not);
marquee($('.tituloNoticia'), $('.marquee'),not);
}
</script>
<%
}
catch(ExcepcionTarisan ex)
{
LogTarisan.logger.log(NivelLog.ERROR, ((Usuario)sesion.getAttribute("USUARIO")).getMedico() + " - ExcepcionTarisan: " + ex.getMensaje());
sesion.setAttribute("ERROR", "Error en la presentación de la página al usuario.");
response.sendRedirect(request.getContextPath() + "/jsp/error.jsp");
}
catch(Exception ex)
{
LogTarisan.logger.log(NivelLog.ERROR, ((Usuario)sesion.getAttribute("USUARIO")).getMedico() + " - Exception: " + ex);
sesion.setAttribute("ERROR", "Error en la presentación de la página al usuario.");
response.sendRedirect(request.getContextPath() + "/jsp/error.jsp");
}
LogTarisan.logger.log(NivelLog.INFO, ((Usuario)sesion.getAttribute("USUARIO")).getMedico() + " - Final página de facturacion_iguala (pac/facturacion_iguala.jsp)");
}
%>