From 0915a7190c993a0e32a3a770c190819c9b81a4a6 Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Thu, 30 Apr 2026 12:14:32 -0300 Subject: [PATCH 1/9] mejoras de agenda --- WebLab/Agendas/AgendaEdit.aspx.cs | 40 +++++++++++--- WebLab/Agendas/AgendaList.aspx | 14 +++++ WebLab/Agendas/AgendaList.aspx.cs | 63 ++++++++++++++++++---- WebLab/Agendas/AgendaList.aspx.designer.cs | 53 ++++++++++-------- WebLab/WebLab.csproj | 8 --- 5 files changed, 133 insertions(+), 45 deletions(-) diff --git a/WebLab/Agendas/AgendaEdit.aspx.cs b/WebLab/Agendas/AgendaEdit.aspx.cs index a6d152d1..dfae347f 100644 --- a/WebLab/Agendas/AgendaEdit.aspx.cs +++ b/WebLab/Agendas/AgendaEdit.aspx.cs @@ -1,7 +1,14 @@ -using System; +using Business; +using Business.Data; +using Business.Data.Laboratorio; +using NHibernate; +using NHibernate.Expression; +using System; using System.Collections; +using System.Collections.Generic; using System.Configuration; using System.Data; +using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.Security; @@ -10,12 +17,6 @@ using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; -using Business; -using Business.Data.Laboratorio; -using Business.Data; -using NHibernate; -using NHibernate.Expression; -using System.Data.SqlClient; namespace WebLab.Agendas { @@ -72,8 +73,16 @@ private void MostrarDatos() { ddlEfector.SelectedValue = oRegistro.IdEfectorSolicitante.IdEfector.ToString(); cboTipoServicio.SelectedValue = oRegistro.IdTipoServicio.IdTipoServicio.ToString(); + txtFechaDesde.Value = oRegistro.FechaDesde.ToShortDateString(); txtFechaHasta.Value = oRegistro.FechaHasta.ToShortDateString(); + + //Por defecto los items se los carga con cboTipoServicio.SelectedValue = 1 + //Por eso cuando el item no es LABORATORIO no trae la Practica porque no es de tipo 1 + if (cboTipoServicio.SelectedValue != "1") + { + CargarItems(); //Lo recargo con el cboTipoServicio de la agenda + } ddlItem.SelectedValue = oRegistro.IdItem.ToString(); AgendaDia oItem = new AgendaDia(); @@ -306,6 +315,23 @@ protected void customValidadorGeneral_ServerValidate(object source, ServerValida if (Request["id"] != null) //Sacar el id de la agenda si es modificacion crit.Add(Expression.Not(Expression.Eq("IdAgenda", int.Parse(Request["id"])))); + // validar días seleccionados + List diasSeleccionados = new List(); + for (int i=0; i 0) diff --git a/WebLab/Agendas/AgendaList.aspx b/WebLab/Agendas/AgendaList.aspx index ad8fdad1..dbfc0a96 100644 --- a/WebLab/Agendas/AgendaList.aspx +++ b/WebLab/Agendas/AgendaList.aspx @@ -25,6 +25,14 @@ + + + + Efector Solicitante: + + @@ -60,6 +68,12 @@ + + + + + + diff --git a/WebLab/Agendas/AgendaList.aspx.cs b/WebLab/Agendas/AgendaList.aspx.cs index 6f71fc18..a4027014 100644 --- a/WebLab/Agendas/AgendaList.aspx.cs +++ b/WebLab/Agendas/AgendaList.aspx.cs @@ -82,15 +82,45 @@ private object LeerDatos() string m_condicion = " and A.idEfector = " + oUser.IdEfector.IdEfector.ToString(); if (ddlTipoServicio.SelectedValue != "0") m_condicion += " and A.idTipoServicio=" + ddlTipoServicio.SelectedValue; + if (ddlEfectorSolicitante.SelectedValue != "0") m_condicion += " and A.idEfectorSolicitante=" + ddlEfectorSolicitante.SelectedValue; - string m_strSQL = @" select top 20 A.idAgenda, T.nombre, I.nombre as item, convert(varchar(10),A.fechaDesde,103) as fechaDesde, - convert(varchar(10),A.fechaHasta,103) as fechaHasta ,E.nombre as efector, U.apellido as usuario, A.fechaRegistro + string m_strSQL = @" select top 20 A.idAgenda, T.nombre, (I.codigo +'-' +I.nombre) as item, convert(varchar(10),A.fechaDesde,103) as fechaDesde, + convert(varchar(10),A.fechaHasta,103) as fechaHasta ,E.nombre as efector, U.apellido as usuario, + A.fechaRegistro,D.dias, D.limiteTurnos from Lab_TipoServicio T (nolock) - INNER JOIN lAB_aGENDA A (nolock) on A.idTipoServicio= T.idTipoServicio - LEFT JOIN lab_item I (nolock) on A.iditem=i.iditem - inner join sys_Efector E (nolock) on E.idEfector=A.idEfectorSolicitante - inner join sys_usuario U (nolock) on U.idUsuario= A.idUsuarioRegistro - where A.baja=0 " + m_condicion +" order by A.idAgenda desc "; + INNER JOIN lAB_aGENDA A (nolock) on A.idTipoServicio= T.idTipoServicio + LEFT JOIN lab_item I (nolock) on A.iditem=i.iditem + inner join sys_Efector E (nolock) on E.idEfector=A.idEfectorSolicitante + inner join sys_usuario U (nolock) on U.idUsuario= A.idUsuarioRegistro + INNER JOIN ( + SELECT + D1.idAgenda, + + STUFF(( + SELECT ', ' + + case + when D2.dia = 1 then 'Lunes' + when D2.dia = 2 then 'Martes' + when D2.dia = 3 then 'Miercoles' + when D2.dia = 4 then 'Jueves' + when D2.dia = 5 then 'Viernes' + when D2.dia = 6 then 'Sabado' + when D2.dia = 7 then 'Domingo' + + end + FROM LAB_AgendaDia D2 (NOLOCK) + WHERE D2.idAgenda = D1.idAgenda + ORDER BY D2.dia + FOR XML PATH('') + ), 1, 1, '') AS dias, + + MAX(D1.limiteTurnos) AS limiteTurnos + + FROM LAB_AgendaDia D1 (NOLOCK) + GROUP BY D1.idAgenda + ) D + ON D.idAgenda = A.idAgenda + where A.baja=0 " + m_condicion +" order by A.idAgenda desc "; DataSet Ds = new DataSet(); SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura @@ -109,10 +139,21 @@ inner join sys_usuario U (nolock) on U.idUsuario= A.idUsuarioRegistro private void CargarListas() { Utility oUtil = new Utility(); ///Carga de combos de Areas + string connReady = ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString; ///Performance: conexion de solo lectura + string m_ssql = "select idTipoServicio, nombre from Lab_TipoServicio WHERE idtipoServicio<4 and (baja = 0)"; oUtil.CargarCombo(ddlTipoServicio, m_ssql, "idTipoServicio", "nombre"); ddlTipoServicio.Items.Insert(0, new ListItem("Todos", "0")); + ////////////Carga de combos de Efector + m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) + where idEfector in (select distinct R.idefectorRel from LAB_EfectorRelacionado R (nolock) + inner join LAB_Agenda D (nolock) ON D.idEfectorSolicitante=R.idefectorRel and D.idEfector=R.idEfector + where D.baja =0 and R.idefector = " + oUser.IdEfector.IdEfector.ToString() + + ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; + + oUtil.CargarCombo(ddlEfectorSolicitante, m_ssql, "idEfector", "nombre"); + ddlEfectorSolicitante.Items.Insert(0, new ListItem("Todos", "0")); m_ssql = null; oUtil = null; @@ -133,12 +174,12 @@ protected void gvLista_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType == DataControlRowType.DataRow) { - ImageButton CmdModificar = (ImageButton)e.Row.Cells[7].Controls[1]; + ImageButton CmdModificar = (ImageButton)e.Row.Cells[9].Controls[1]; CmdModificar.CommandArgument = this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString(); CmdModificar.CommandName = "Modificar"; CmdModificar.ToolTip="Modifica"; - ImageButton CmdEliminar = (ImageButton)e.Row.Cells[8].Controls[1]; + ImageButton CmdEliminar = (ImageButton)e.Row.Cells[10].Controls[1]; CmdEliminar.CommandArgument = this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString(); if (Permiso == 1) { @@ -192,5 +233,9 @@ protected void ddlTipoServicio_SelectedIndexChanged(object sender, EventArgs e) CargarGrilla(); } + protected void ddlEfectorSolicitante_SelectedIndexChanged(object sender, EventArgs e) + { + CargarGrilla(); + } } } diff --git a/WebLab/Agendas/AgendaList.aspx.designer.cs b/WebLab/Agendas/AgendaList.aspx.designer.cs index 24ed57e8..eae8585f 100644 --- a/WebLab/Agendas/AgendaList.aspx.designer.cs +++ b/WebLab/Agendas/AgendaList.aspx.designer.cs @@ -1,41 +1,52 @@ //------------------------------------------------------------------------------ -// -// This code was generated by a tool. +// +// Este código fue generado por una herramienta. // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// //------------------------------------------------------------------------------ -namespace WebLab.Agendas { - - - public partial class AgendaList { - +namespace WebLab.Agendas +{ + + + public partial class AgendaList + { + /// - /// ddlTipoServicio control. + /// Control ddlTipoServicio. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlTipoServicio; - + + /// + /// Control ddlEfectorSolicitante. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlEfectorSolicitante; + /// - /// btnAgregar control. + /// Control btnAgregar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnAgregar; - + /// - /// gvLista control. + /// Control gvLista. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.GridView gvLista; } diff --git a/WebLab/WebLab.csproj b/WebLab/WebLab.csproj index f06aebe9..8a6e935f 100644 --- a/WebLab/WebLab.csproj +++ b/WebLab/WebLab.csproj @@ -2124,7 +2124,6 @@ - @@ -4854,13 +4853,6 @@ ResultadoDefault.aspx - - ResultadosaSisa.aspx - ASPXCodeBehind - - - ResultadosaSisa.aspx - SinDatos.aspx ASPXCodeBehind From 9e56a841067e716fbc972b020b5fa9aa30d79a87 Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Thu, 30 Apr 2026 12:55:01 -0300 Subject: [PATCH 2/9] mejora tab y efector relacionado --- WebLab/Agendas/AgendaList.aspx | 6 +++--- WebLab/Agendas/AgendaList.aspx.cs | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/WebLab/Agendas/AgendaList.aspx b/WebLab/Agendas/AgendaList.aspx index dbfc0a96..6e7092f4 100644 --- a/WebLab/Agendas/AgendaList.aspx +++ b/WebLab/Agendas/AgendaList.aspx @@ -24,7 +24,7 @@ + onselectedindexchanged="ddlTipoServicio_SelectedIndexChanged" tabindex="1"> @@ -32,12 +32,12 @@ + onselectedindexchanged="ddlEfectorSolicitante_SelectedIndexChanged" tabindex="2"> + Text="Agregar" Font-Size="10pt" CssClass="btn btn-primary" Width="100px" tabindex="3"/> diff --git a/WebLab/Agendas/AgendaList.aspx.cs b/WebLab/Agendas/AgendaList.aspx.cs index a4027014..7ace67de 100644 --- a/WebLab/Agendas/AgendaList.aspx.cs +++ b/WebLab/Agendas/AgendaList.aspx.cs @@ -153,7 +153,8 @@ inner join LAB_Agenda D (nolock) ON D.idEfectorSolicitante=R.idefectorRel and D ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; oUtil.CargarCombo(ddlEfectorSolicitante, m_ssql, "idEfector", "nombre"); - ddlEfectorSolicitante.Items.Insert(0, new ListItem("Todos", "0")); + if(ddlEfectorSolicitante.Items.Count > 1) + ddlEfectorSolicitante.Items.Insert(0, new ListItem("Todos", "0")); m_ssql = null; oUtil = null; From 80395fb6a6c955ec6cccaf076c06510230b100c7 Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Mon, 4 May 2026 09:20:56 -0300 Subject: [PATCH 3/9] fix: configuracion para subse en agendas --- WebLab/Agendas/AgendaList.aspx.cs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/WebLab/Agendas/AgendaList.aspx.cs b/WebLab/Agendas/AgendaList.aspx.cs index 7ace67de..c828c19a 100644 --- a/WebLab/Agendas/AgendaList.aspx.cs +++ b/WebLab/Agendas/AgendaList.aspx.cs @@ -41,7 +41,10 @@ protected void Page_Load(object sender, EventArgs e) CargarListas(); CargarGrilla(); - + if (oUser.IdEfector.IdEfector == 227) + btnAgregar.Visible = false; + + } } private int Permiso /*el permiso */ @@ -79,8 +82,11 @@ private object LeerDatos() { //Usuario oUser = new Usuario(); //oUser = (Usuario)oUser.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - - string m_condicion = " and A.idEfector = " + oUser.IdEfector.IdEfector.ToString(); + + string m_condicion=""; + + if (oUser.IdEfector.IdEfector != 227) + m_condicion = " and A.idEfector = " + oUser.IdEfector.IdEfector.ToString(); if (ddlTipoServicio.SelectedValue != "0") m_condicion += " and A.idTipoServicio=" + ddlTipoServicio.SelectedValue; if (ddlEfectorSolicitante.SelectedValue != "0") m_condicion += " and A.idEfectorSolicitante=" + ddlEfectorSolicitante.SelectedValue; @@ -146,11 +152,19 @@ private void CargarListas() ddlTipoServicio.Items.Insert(0, new ListItem("Todos", "0")); ////////////Carga de combos de Efector - m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) + if (oUser.IdEfector.IdEfector == 227) + { + m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) + where idEfector in (select distinct D.idEfectorSolicitante from LAB_Agenda D (nolock) + where D.baja =0) + order by nombre "; + } + else + m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) where idEfector in (select distinct R.idefectorRel from LAB_EfectorRelacionado R (nolock) inner join LAB_Agenda D (nolock) ON D.idEfectorSolicitante=R.idefectorRel and D.idEfector=R.idEfector where D.baja =0 and R.idefector = " + oUser.IdEfector.IdEfector.ToString() + - ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; + ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; oUtil.CargarCombo(ddlEfectorSolicitante, m_ssql, "idEfector", "nombre"); if(ddlEfectorSolicitante.Items.Count > 1) From bc8319f02f2c173dfc3759e864c7762437206524 Mon Sep 17 00:00:00 2001 From: caroPintos <77695282+caroPintos@users.noreply.github.com> Date: Mon, 4 May 2026 15:17:15 -0300 Subject: [PATCH 4/9] Mantenimiento Mayo 1 (#90) --- Business/Data/AutoAnalizador/RealItem.cs | 127 ++++ Business/Data/AutoAnalizador/RealItem.hbm.xml | 13 + Business/Data/Laboratorio/Protocolo.cs | 200 +++++- .../REAL/ConfiguracionEdit.aspx | 144 +++++ .../REAL/ConfiguracionEdit.aspx.cs | 297 +++++++++ .../REAL/ConfiguracionEdit.aspx.designer.cs | 96 +++ .../ControlResultados/ControlPlanilla.aspx.cs | 34 +- WebLab/Informes/Auditoria.aspx.cs | 4 +- WebLab/Informes/AuditoriaUsuario.aspx.cs | 2 +- WebLab/Informes/HistoriaClinica.aspx.cs | 45 +- .../HTrabajoProtocolo2Horizontal.rpt | Bin 32768 -> 32768 bytes WebLab/Informes/Informe.aspx | 2 +- WebLab/Informes/Informe.aspx.cs | 7 +- WebLab/Protocolos/ProcesaRenaper.aspx.cs | 247 ++++++- WebLab/Protocolos/ProtocoloEdit2.aspx.cs | 112 +--- WebLab/Resultados/ResultadoBusqueda.aspx | 2 +- WebLab/Resultados/ResultadoEdit2.aspx | 2 +- WebLab/Resultados/ResultadoView.aspx | 19 +- WebLab/Resultados/ResultadoView.aspx.cs | 609 +++++------------- .../Resultados/ResultadoView.aspx.designer.cs | 34 +- WebLab/Turnos/TurnosEdit2.aspx.cs | 17 +- WebLab/Usuarios/PasswordEdit.aspx.cs | 20 +- WebLab/login.ascx.cs | 28 +- WebLab/loginSIL.ascx.cs | 280 ++++---- 24 files changed, 1486 insertions(+), 855 deletions(-) create mode 100644 Business/Data/AutoAnalizador/RealItem.cs create mode 100644 Business/Data/AutoAnalizador/RealItem.hbm.xml create mode 100644 WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx create mode 100644 WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.cs create mode 100644 WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.designer.cs diff --git a/Business/Data/AutoAnalizador/RealItem.cs b/Business/Data/AutoAnalizador/RealItem.cs new file mode 100644 index 00000000..0615d231 --- /dev/null +++ b/Business/Data/AutoAnalizador/RealItem.cs @@ -0,0 +1,127 @@ +/* +insert license info here +*/ +using System; +using System.Collections; + +namespace Business.Data.AutoAnalizador +{ + /// + /// Generated by MyGeneration using the NHibernate Object Mapping template + /// + [Serializable] + public sealed class RealItem: Business.BaseDataAccess + { + + #region Private Members + private bool m_isChanged; + + private int m_idrealitem; + private string m_idreal; + private int m_iditem; + private bool m_habilitado; + #endregion + + #region Default ( Empty ) Class Constuctor + /// + /// default constructor + /// + public RealItem() + { + m_idrealitem = 0; + m_idreal = String.Empty; + m_iditem = 0; + m_habilitado = false; + } + #endregion // End of Default ( Empty ) Class Constuctor + + #region Required Fields Only Constructor + /// + /// required (not null) fields only constructor + /// + public RealItem( + string idreal, + int iditem, + bool habilitado) + : this() + { + m_idreal = idreal; + m_iditem = iditem; + m_habilitado = habilitado; + } + #endregion // End Required Fields Only Constructor + + #region Public Properties + + /// + /// + /// + public int IdRealItem + { + get { return m_idrealitem; } + set + { + m_isChanged |= (m_idrealitem != value ); + m_idrealitem = value; + } + + } + + /// + /// + /// + public string IdReal + { + get { return m_idreal; } + + set + { + if( value == null ) + throw new ArgumentOutOfRangeException("Null value not allowed for IdReal", value, "null"); + + if( value.Length > 50) + throw new ArgumentOutOfRangeException("Invalid value for IdReal", value, value.ToString()); + + m_isChanged |= (m_idreal != value); m_idreal = value; + } + } + + /// + /// + /// + public int IdItem + { + get { return m_iditem; } + set + { + m_isChanged |= ( m_iditem != value ); + m_iditem = value; + } + + } + + /// + /// + /// + public bool Habilitado + { + get { return m_habilitado; } + set + { + m_isChanged |= ( m_habilitado != value ); + m_habilitado = value; + } + + } + + /// + /// Returns whether or not the object has changed it's values. + /// + public bool IsChanged + { + get { return m_isChanged; } + } + + #endregion + } +} diff --git a/Business/Data/AutoAnalizador/RealItem.hbm.xml b/Business/Data/AutoAnalizador/RealItem.hbm.xml new file mode 100644 index 00000000..dc314397 --- /dev/null +++ b/Business/Data/AutoAnalizador/RealItem.hbm.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/Business/Data/Laboratorio/Protocolo.cs b/Business/Data/Laboratorio/Protocolo.cs index 4ab840ca..2f88115e 100644 --- a/Business/Data/Laboratorio/Protocolo.cs +++ b/Business/Data/Laboratorio/Protocolo.cs @@ -11,6 +11,8 @@ insert license info here using System.IO; using System.Drawing; using QRCoder; +using System.Collections.Generic; +using System.Linq; namespace Business.Data.Laboratorio { @@ -1116,6 +1118,120 @@ public DateTime FechaTomaMuestra } } + public class ResultadoAnteriorDTO + { + public int IdSubItem { get; set; } + public string Resultado { get; set; } + } + + public Dictionary ObtenerResultadosAnteriores(string conexion) + { + int idPaciente = this.IdPaciente.IdPaciente; + int idProtocoloActual = this.IdProtocolo; + Dictionary diccionario = + new Dictionary(); + + string sql = @" + SELECT + dp.IdSubItem, + dp.ResultadoCar, + dp.ResultadoNum, + dp.FormatoValida, + dp.UnidadMedida + FROM LAB_DetalleProtocolo dp + INNER JOIN LAB_Protocolo p + ON p.IdProtocolo = dp.IdProtocolo + INNER JOIN + ( + SELECT + dp2.IdSubItem, + MAX(dp2.IdDetalleProtocolo) IdDetalle + FROM LAB_DetalleProtocolo dp2 + INNER JOIN LAB_Protocolo p2 + ON p2.IdProtocolo = dp2.IdProtocolo + WHERE p2.IdPaciente = @idPaciente + AND p2.Baja = 0 + AND p2.Estado > 0 + AND p2.IdProtocolo < @idProtocoloActual + AND dp2.IdUsuarioValida > 0 + GROUP BY dp2.IdSubItem + ) ult + ON ult.IdDetalle = dp.IdDetalleProtocolo + "; + + Utility oUtil = new Utility(); + + using (SqlConnection conn = + new SqlConnection(conexion + )) + { + using (SqlCommand cmd = new SqlCommand(sql, conn)) + { + cmd.Parameters.AddWithValue("@idPaciente", idPaciente); + cmd.Parameters.AddWithValue("@idProtocoloActual", idProtocoloActual); + + conn.Open(); + + using (SqlDataReader dr = cmd.ExecuteReader()) + { + while (dr.Read()) + { + int idSubItem = + Convert.ToInt32(dr["IdSubItem"]); + + string resultado = ""; + + string resultadoCar = + dr["ResultadoCar"] != DBNull.Value + ? dr["ResultadoCar"].ToString().Trim() + : ""; + + if (resultadoCar == "") + { + decimal resultadoNum = + dr["ResultadoNum"] != DBNull.Value + ? Convert.ToDecimal(dr["ResultadoNum"]) + : 0; + + string formatoValida = + dr["FormatoValida"] != DBNull.Value + ? dr["FormatoValida"].ToString() + : "0"; + + string unidadMedida = + dr["UnidadMedida"] != DBNull.Value + ? dr["UnidadMedida"].ToString() + : ""; + + string formato = + oUtil.Formato(formatoValida); + + resultado = + resultadoNum.ToString( + formato, + System.Globalization.CultureInfo.InvariantCulture); + + if (unidadMedida != "") + resultado += " " + unidadMedida; + } + else + { + resultado = + resultadoCar.Length > 10 + ? resultadoCar.Substring(0, 10) + : resultadoCar; + } + + if (!diccionario.ContainsKey(idSubItem)) + diccionario.Add(idSubItem, resultado); + } + } + } + } + + return diccionario; + } + /// /// Returns whether or not the object has changed it's values. /// @@ -1252,13 +1368,11 @@ public int GenerarNumeroMultiEfector(int idEfector) } public bool tieneAdjuntoProtocolo() { - ICriteria crit = m_session.CreateCriteria(typeof(ProtocoloAnexo)); - + ICriteria crit = m_session.CreateCriteria(typeof(ProtocoloAnexo)); crit.Add(Expression.Eq("IdProtocolo", this)); crit.Add(Expression.Eq("IdDetalleProtocolo", 0)); IList lista = crit.List(); if (lista.Count > 0) - return true; else @@ -2161,8 +2275,9 @@ public void CalcularFormulas(string s_operacion, int i_idusuario, bool solovacio { crit.Add(Expression.Eq("ConResultado",false)); } + - IList lista = crit.List(); + IList lista = crit.List(); //if (lista.Count > 0) //{ @@ -2176,7 +2291,8 @@ public void CalcularFormulas(string s_operacion, int i_idusuario, bool solovacio if (oItem.SinInsumo) continue; /*fin control insumo */ - ICriteria critFormula = m_session.CreateCriteria(typeof(Formula)); + + ICriteria critFormula = m_session.CreateCriteria(typeof(Formula)); critFormula.Add(Expression.Eq("IdItem", oDet.IdSubItem)); critFormula.Add(Expression.Eq("IdTipoFormula", 1)); critFormula.Add(Expression.Eq("Baja", false)); @@ -2751,33 +2867,57 @@ FROM LAB_AuditoriaProtocolo AS A INNER JOIN public string GetPracticasPedidas() { - string s_practicas = ""; - DetalleProtocolo oDetalle = new DetalleProtocolo(); - ISession m_session = NHibernateHttpModule.CurrentSession; - ICriteria crit = m_session.CreateCriteria(typeof(DetalleProtocolo)); - crit.Add(Expression.Eq("IdProtocolo", this)); - crit.Add(Expression.Eq("Informable", true)); - crit.AddOrder(Order.Asc("IdDetalleProtocolo")); - - IList items = crit.List(); - string pivot = ""; - string sDatos = ""; - foreach (DetalleProtocolo oDet in items) - { - if (pivot != oDet.IdItem.Nombre) - { - if (sDatos == "") - sDatos = oDet.IdItem.Nombre; - else - sDatos += " - " + oDet.IdItem.Nombre; - //sDatos += "#" + oDet.IdItem.Codigo + "#" + oDet.IdItem.Nombre + "#" + oDet.TrajoMuestra + "@"; - pivot = oDet.IdItem.Nombre; - } - + /* string s_practicas = ""; + DetalleProtocolo oDetalle = new DetalleProtocolo(); + ISession m_session = NHibernateHttpModule.CurrentSession; + ICriteria crit = m_session.CreateCriteria(typeof(DetalleProtocolo)); + crit.Add(Expression.Eq("IdProtocolo", this)); + crit.Add(Expression.Eq("Informable", true)); + crit.AddOrder(Order.Asc("IdDetalleProtocolo")); + + IList items = crit.List(); + string pivot = ""; + string sDatos = ""; + foreach (DetalleProtocolo oDet in items) + { + if (pivot != oDet.IdItem.Nombre) + { + if (sDatos == "") + sDatos = oDet.IdItem.Nombre; + else + sDatos += " - " + oDet.IdItem.Nombre; + //sDatos += "#" + oDet.IdItem.Codigo + "#" + oDet.IdItem.Nombre + "#" + oDet.TrajoMuestra + "@"; + pivot = oDet.IdItem.Nombre; + } + + } + + s_practicas = sDatos; + return s_practicas; + */ + ISession session = NHibernateHttpModule.CurrentSession; + + IList practicas = session.CreateQuery(@" + select distinct i.Nombre + from DetalleProtocolo dp + inner join dp.IdItem i + where dp.IdProtocolo = :protocolo + and dp.Informable = 1 + order by i.Nombre") + .SetEntity("protocolo", this) + .List(); + + string resultado = ""; + + foreach (object item in practicas) + { + if (resultado == "") + resultado = item.ToString(); + else + resultado += " - " + item.ToString(); } - s_practicas = sDatos; - return s_practicas; + return resultado; } public void ActualizarNumeroDesdeID() diff --git a/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx b/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx new file mode 100644 index 00000000..0221967d --- /dev/null +++ b/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx @@ -0,0 +1,144 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ConfiguracionEdit.aspx.cs" Inherits="WebLab.AutoAnalizador.REAL.ConfiguracionEdit" MasterPageFile="~/Site1.Master" %> +<%@ Register assembly="Anthem" namespace="Anthem" tagprefix="anthem" %> + + + + + + + + + +
+
+
+

Configuración SIL - REAL

+
+ +
+ + + + + + + + + + + + + + + + + + + <%-- + --%> + + + + + + + + + + + + + + + + + +
+ Area: + + +
+ Análisis del LIS: + + + + + + +
+ ID en Equipo: + + + +
+   + +
+ + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + +
+
+
+ + + +
diff --git a/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.cs b/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.cs new file mode 100644 index 00000000..f8bf8818 --- /dev/null +++ b/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.cs @@ -0,0 +1,297 @@ +using System; +using System.Collections; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Web; +using System.Web.Security; +using System.Web.UI; +using System.Web.UI.HtmlControls; +using System.Web.UI.WebControls; +using System.Web.UI.WebControls.WebParts; +using System.Xml.Linq; +using System.Data.SqlClient; +using Business; +using Business.Data.AutoAnalizador; +using NHibernate; +using NHibernate.Expression; +using System.Text; +using System.IO; +using Business.Data; + +namespace WebLab.AutoAnalizador.REAL +{ + public partial class ConfiguracionEdit : System.Web.UI.Page + { + Usuario oUser = new Usuario(); + + protected void Page_PreInit(object sender, EventArgs e) + { + if (Session["idUsuario"] != null) + oUser = (Usuario)oUser.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); + // oC = (Configuracion)oC.Get(typeof(Configuracion), "IdConfiguracion", 1, "IdEfector", oEfector); + else + Response.Redirect("../FinSesion.aspx", false); + + } + protected void Page_Load(object sender, EventArgs e) + { + if (!Page.IsPostBack) + { + VerificaPermisos("Config. REAL"); + CargarCombos(); + CargarGrilla(); + } + } + private void VerificaPermisos(string sObjeto) + { + if (Session["s_permiso"] != null) + { + Utility oUtil = new Utility(); + int i_permiso = oUtil.VerificaPermisos((ArrayList)Session["s_permiso"], sObjeto); + switch (i_permiso) + { + case 0: Response.Redirect("../AccesoDenegado.aspx", false); break; + //case 1: btn .Visible = false; break; + } + } + else Response.Redirect("../FinSesion.aspx", false); + } + private void CargarGrilla() + { + gvLista.DataSource = LeerDatos(); + gvLista.DataBind(); + } + + private DataTable LeerDatos() + { + string m_strSQL = @" SELECT M.idrealitem, I.codigo, I.nombre, M.idreal, M.habilitado as Habilitado + FROM lab_realitem AS M + INNER JOIN LAB_Item AS I ON M.idItem = I.idItem Order by I.nombre "; + + DataSet Ds = new DataSet(); + SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection; + SqlDataAdapter adapter = new SqlDataAdapter(); + adapter.SelectCommand = new SqlCommand(m_strSQL, conn); + adapter.Fill(Ds); + + // CantidadRegistros.Text = Ds.Tables[0].Rows.Count.ToString() + " registros encontrados"; + + return Ds.Tables[0]; + } + private DataTable LeerDatosExcel() + { + string m_strSQL = @" SELECT I.codigo as [Codigo SIL], I.nombre as [Descripcion], M.idreal as [Codigo Real], M.habilitado as Habilitado + FROM lab_realitem AS M + INNER JOIN LAB_Item AS I ON M.idItem = I.idItem Order by I.nombre "; + + DataSet Ds = new DataSet(); + SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection; + SqlDataAdapter adapter = new SqlDataAdapter(); + adapter.SelectCommand = new SqlCommand(m_strSQL, conn); + adapter.Fill(Ds); + + // CantidadRegistros.Text = Ds.Tables[0].Rows.Count.ToString() + " registros encontrados"; + + return Ds.Tables[0]; + } + + private void CargarCombos() + { + + Utility oUtil = new Utility(); + string connReady = ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString; ///Performance: conexion de solo lectura + + string m_ssql = "select idArea, nombre from Lab_Area where baja=0 and idtiposervicio=3 order by nombre"; + oUtil.CargarCombo(ddlArea, m_ssql, "idArea", "nombre", connReady); + + + + CargarItem(); + //ddlArea.Items.Insert(0, new ListItem("Seleccione Area", "0")); + + + m_ssql = null; + oUtil = null; + } + + + + + + + private void GuardarDetalleConfiguracion() + { + RealItem oDetalle = new RealItem(); + oDetalle.IdReal = txtIDEquipo.Text; + oDetalle.IdItem = int.Parse(ddlItem.SelectedValue); + oDetalle.Habilitado = true; + oDetalle.Save(); + + + + } + + + protected void btnGuardar_Click2(object sender, EventArgs e) + { + if (Page.IsValid) + { + string validacion = existe(); + if (validacion == "") + { + lblMensajeValidacion.Text = ""; + GuardarDetalleConfiguracion(); + CargarGrilla(); + } + else + lblMensajeValidacion.Text = validacion; + } + } + + private string existe() + { + ////////////////////////////////////////////////////////////////////////////////////////// + ///Verifica de que no exista un item para la combincacion orden y tipo de muestra + ////////////////////////////////////////////////////////////////////////////////////////// + string hay = ""; + + RealItem oItem = new RealItem(); + oItem = (RealItem)oItem.Get(typeof(RealItem), "IdItem", int.Parse(ddlItem.SelectedValue)); + if (oItem == null) + { + + ISession m_session = NHibernateHttpModule.CurrentSession; + ICriteria crit = m_session.CreateCriteria(typeof(RealItem)); + crit.Add(Expression.Eq("IdReal", txtIDEquipo.Text)); + IList detalle = crit.List(); + if (detalle.Count > 0) + hay = "Ya existe una vinculación para el ID de muestra seleccionado. Verifique."; + } + else + hay = "Ya existe una configuración para el análisis seleccionado"; + + return hay; + } + + protected void gvLista_RowDataBound(object sender, GridViewRowEventArgs e) + { + if (e.Row.RowType == DataControlRowType.DataRow) + { + + ImageButton CmdEliminar = (ImageButton)e.Row.Cells[4].Controls[1]; + CmdEliminar.CommandArgument = this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString(); + CmdEliminar.CommandName = "Eliminar"; + CmdEliminar.ToolTip = "Eliminar"; + + + CheckBox chkStatus = (CheckBox)e.Row.Cells[3].Controls[1]; + if (oUser.IdEfector.IdEfector == 227) + { + CmdEliminar.Visible = true; + chkStatus.Visible = true; + + } + else + { + CmdEliminar.Visible = false; + chkStatus.Enabled = false; + } + + + } + } + + protected void gvLista_RowCommand(object sender, GridViewCommandEventArgs e) + { + if (e.CommandName == "Eliminar") + { + RealItem oRegistro = new RealItem(); + oRegistro = (RealItem)oRegistro.Get(typeof(RealItem), int.Parse(e.CommandArgument.ToString())); + oRegistro.Delete(); + + CargarGrilla(); + + } + + } + protected void chkStatus_OnCheckedChanged(object sender, EventArgs e) + { + CheckBox chkStatus = (CheckBox)sender; + GridViewRow row = (GridViewRow)chkStatus.NamingContainer; + + int i_id = int.Parse(gvLista.DataKeys[row.RowIndex].Value.ToString()); + + RealItem oRegistro = new RealItem(); + oRegistro = (RealItem)oRegistro.Get(typeof(RealItem), i_id); + oRegistro.Habilitado = chkStatus.Checked; + oRegistro.Save(); + + + } + protected void lnkRegresar_Click(object sender, EventArgs e) + { + // Response.Redirect("../PrincipalSysmex.aspx", false); + } + + protected void ddlArea_SelectedIndexChanged(object sender, EventArgs e) + { + CargarItem(); + } + + private void CargarItem() + { + + + + + Utility oUtil = new Utility(); + string connReady = ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString; ///Performance: conexion de solo lectura + + ///Carga de combos de Item sin el item que se está configurando y solo las determinaciones simples + string m_ssql = @"select idItem, nombre + ' - ' + codigo as nombre from Lab_Item I + where baja=0 AND idArea=" + ddlArea.SelectedValue + + " order by nombre"; + + oUtil.CargarCombo(ddlItem, m_ssql, "idItem", "nombre", connReady); + ddlItem.Items.Insert(0, new ListItem("Seleccione Item", "0")); + ddlItem.UpdateAfterCallBack = true; + } + + protected void btnExcel_Click(object sender, EventArgs e) + { + if (Page.IsValid) + dataTableAExcel(LeerDatosExcel(), "REAL_SIL"); + } + + + private void dataTableAExcel(DataTable tabla, string nombreArchivo) + { + if (tabla.Rows.Count > 0) + { + StringBuilder sb = new StringBuilder(); + StringWriter sw = new StringWriter(sb); + HtmlTextWriter htw = new HtmlTextWriter(sw); + Page pagina = new Page(); + HtmlForm form = new HtmlForm(); + GridView dg = new GridView(); + dg.EnableViewState = false; + dg.DataSource = tabla; + dg.DataBind(); + pagina.EnableEventValidation = false; + pagina.DesignerInitialize(); + pagina.Controls.Add(form); + form.Controls.Add(dg); + pagina.RenderControl(htw); + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/vnd.ms-excel"; + Response.AddHeader("Content-Disposition", "attachment;filename=" + nombreArchivo + ".xls"); + Response.Charset = "UTF-8"; + Response.ContentEncoding = Encoding.Default; + Response.Write(sb.ToString()); + Response.End(); + } + } + } +} diff --git a/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.designer.cs b/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.designer.cs new file mode 100644 index 00000000..ce56935f --- /dev/null +++ b/WebLab/AutoAnalizador/REAL/ConfiguracionEdit.aspx.designer.cs @@ -0,0 +1,96 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebLab.AutoAnalizador.REAL { + + + public partial class ConfiguracionEdit { + + /// + /// ddlArea control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::Anthem.DropDownList ddlArea; + + /// + /// ddlItem control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::Anthem.DropDownList ddlItem; + + /// + /// RangeValidator1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RangeValidator RangeValidator1; + + /// + /// txtIDEquipo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtIDEquipo; + + /// + /// RequiredFieldValidator1 control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1; + + /// + /// btnGuardar control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnGuardar; + + /// + /// lblMensajeValidacion control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMensajeValidacion; + + /// + /// btnExcel control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Button btnExcel; + + /// + /// gvLista control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.GridView gvLista; + } +} diff --git a/WebLab/ControlResultados/ControlPlanilla.aspx.cs b/WebLab/ControlResultados/ControlPlanilla.aspx.cs index 983127e8..52f6059c 100644 --- a/WebLab/ControlResultados/ControlPlanilla.aspx.cs +++ b/WebLab/ControlResultados/ControlPlanilla.aspx.cs @@ -188,46 +188,20 @@ protected void btnBuscar_Click(object sender, EventArgs e) string m_parametro = " P.idTipoServicio=" + ddlServicio.SelectedValue; m_parametro += " AND P.Fecha>='" + fecha1.ToString("yyyyMMdd") + "' AND P.fecha<='" + fecha2.ToString("yyyyMMdd") + "'"; m_parametro += " and P.idEfector =" + oUser.IdEfector.IdEfector.ToString(); - //if (ddlArea.SelectedValue != "0") m_parametro += " AND i.idArea=" + ddlArea.SelectedValue; - - - //Configuracion oCon = new Configuracion(); oCon = (Configuracion)oCon.Get(typeof(Configuracion), 1); - //switch (oCon.TipoNumeracionProtocolo)// busqueda con autonumerico - //{ - // case 0: - // { + if (txtProtocoloDesde.Value != "") m_parametro += " And P.numero>=" + int.Parse(txtProtocoloDesde.Value); if (txtProtocoloHasta.Value != "") m_parametro += " AND P.numero<=" + int.Parse(txtProtocoloHasta.Value); - // } break; - // case 1: - // { - // if (txtProtocoloDesde.Value != "") m_parametro += " And P.numeroDiario>=" + int.Parse(txtProtocoloDesde.Value); - // if (txtProtocoloHasta.Value != "") m_parametro += " AND P.numeroDiario<=" + int.Parse(txtProtocoloHasta.Value); - // } break; - // case 2: - // { - // if (txtProtocoloDesde.Value != "") m_parametro += " And P.numeroSector>=" + int.Parse(txtProtocoloDesde.Value); - // if (txtProtocoloHasta.Value != "") m_parametro += " AND P.numeroSector<=" + int.Parse(txtProtocoloHasta.Value); - // } break; - - // case 3: - // { - // if (txtProtocoloDesde.Value != "") m_parametro += " And P.numeroTipoServicio>=" + int.Parse(txtProtocoloDesde.Value); - // if (txtProtocoloHasta.Value != "") m_parametro += " AND P.numeroTipoServicio<=" + int.Parse(txtProtocoloHasta.Value); - // } break; - //} + if (ddlEfector.SelectedValue != "0") m_parametro += " AND P.idEfectorSolicitante=" + ddlEfector.SelectedValue; if (ddlOrigen.SelectedValue != "0") m_parametro += " AND P.idOrigen=" + ddlOrigen.SelectedValue; if (ddlPrioridad.SelectedValue != "0") m_parametro += " AND P.idPrioridad=" + ddlPrioridad.SelectedValue; - // if (ddlSectorServicio.SelectedValue != "0") m_parametro += " AND P.idSector = " + ddlSectorServicio.SelectedValue; - + m_parametro += " AND P.idSector in (" + getListaSectores() + ")"; string m_orden = " order by P.numero "; - //string operacion = "Carga"; - // string modoCarga = "HT"; + if (chkRecordarFiltro.Checked) AlmacenarSesion(); diff --git a/WebLab/Informes/Auditoria.aspx.cs b/WebLab/Informes/Auditoria.aspx.cs index b1e2c999..e7f53358 100644 --- a/WebLab/Informes/Auditoria.aspx.cs +++ b/WebLab/Informes/Auditoria.aspx.cs @@ -124,11 +124,11 @@ private void CargarListas() string m_ssql = @" select idusuario, apellido + ' ' +nombre as nombre from sys_usuario u with (nolock) - where activo = 1 + where activo = 1 and username <>'adminapi' and exists (select 1 from sys_usuarioefector e (nolock) where e.idusuario = u.idusuario and e.idEfector = " + oUser.IdEfector.IdEfector.ToString() + @") order by apellido, nombre"; if (oUser.Administrador) { - m_ssql = @" select idusuario, apellido + ' ' +nombre as nombre from sys_usuario u with (nolock) where activo = 1 order by apellido, nombre"; + m_ssql = @" select idusuario, apellido + ' ' +nombre as nombre from sys_usuario u with (nolock) where activo = 1 and username <>'adminapi' order by apellido, nombre"; } oUtil.CargarCombo(ddlUsuario, m_ssql, "idusuario", "nombre", connReady); oUtil.CargarCombo(ddlUsuario2, m_ssql, "idusuario", "nombre", connReady); diff --git a/WebLab/Informes/AuditoriaUsuario.aspx.cs b/WebLab/Informes/AuditoriaUsuario.aspx.cs index afb4eff7..225967c0 100644 --- a/WebLab/Informes/AuditoriaUsuario.aspx.cs +++ b/WebLab/Informes/AuditoriaUsuario.aspx.cs @@ -68,7 +68,7 @@ private void CargarListas() { Utility oUtil = new Utility(); ///Carga de combos de tipos de servicios - string m_ssql = "select idusuario, apellido + ' ' +nombre as nombre from sys_usuario order by apellido, nombre"; + string m_ssql = "select idusuario, apellido + ' ' +nombre as nombre from sys_usuario where username<>'adminapi' order by apellido, nombre"; oUtil.CargarCombo(ddlUsuarioModificado, m_ssql, "idusuario", "nombre"); oUtil.CargarCombo(ddlUsuarioABM, m_ssql, "idusuario", "nombre"); diff --git a/WebLab/Informes/HistoriaClinica.aspx.cs b/WebLab/Informes/HistoriaClinica.aspx.cs index d1f36f04..ad26db10 100644 --- a/WebLab/Informes/HistoriaClinica.aspx.cs +++ b/WebLab/Informes/HistoriaClinica.aspx.cs @@ -24,17 +24,26 @@ namespace WebLab.Informes public partial class HistoriaClinica : System.Web.UI.Page { Paciente oPaciente = new Paciente(); - + Configuracion oCon = new Configuracion(); public CrystalReportSource oCr = new CrystalReportSource(); - + public Usuario oUser = new Usuario(); protected void Page_PreInit(object sender, EventArgs e) { oCr.Report.FileName = ""; oCr.CacheDuration = 0; oCr.EnableCaching = false; + if (Session["idUsuario"] != null) + { + + oUser = (Usuario)oUser.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); + oCon = (Configuracion)oCon.Get(typeof(Configuracion), "IdEfector", oUser.IdEfector); - } + } + else + Response.Redirect("SinDatos.aspx", false); + + } protected void Page_Load(object sender, EventArgs e) { @@ -131,7 +140,8 @@ private void MostrarPaciente() private DataTable LlenarDatos() { DataSet Ds = new DataSet(); - SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection; + string conexion = ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString; + SqlConnection conn = new SqlConnection(conexion); ///Performance: conexion de solo lectura SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; @@ -186,16 +196,25 @@ private void ExportarPDF() dt =LlenarDatos(); if (dt.Rows.Count > 0) { - Configuracion oCon = new Configuracion(); oCon = (Configuracion)oCon.Get(typeof(Configuracion), 1); + /// Configuracion oCon = new Configuracion(); oCon = (Configuracion)oCon.Get(typeof(Configuracion), 1); + string enc1 = "SUBSECRETARIA DE SALUD"; + string enc2 = "SISTEMA INFORMATICO PROVINCIAL DE LABORATORIO"; + string enc3 = ""; + if (oUser.IdEfector.IdEfector != 227) + { + enc1= oCon.EncabezadoLinea1; + enc2 = oCon.EncabezadoLinea2; + enc3 = oCon.EncabezadoLinea3; + } ParameterDiscreteValue encabezado1 = new ParameterDiscreteValue(); - encabezado1.Value = oCon.EncabezadoLinea1; + encabezado1.Value = enc1;// oCon.EncabezadoLinea1; ParameterDiscreteValue encabezado2 = new ParameterDiscreteValue(); - encabezado2.Value = oCon.EncabezadoLinea2; + encabezado2.Value = enc2; // oCon.EncabezadoLinea2; ParameterDiscreteValue encabezado3 = new ParameterDiscreteValue(); - encabezado3.Value = oCon.EncabezadoLinea3; + encabezado3.Value = enc3;// oCon.EncabezadoLinea3; ParameterDiscreteValue encabezado4 = new ParameterDiscreteValue(); encabezado4.Value = lblAnalisis.Text; @@ -244,15 +263,7 @@ private void ExportarPDF() oCr.DataBind(); oCr.ReportDocument.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, "Historial_Resultados.pdf"); - //MemoryStream oStream; // using System.IO - //oStream = (MemoryStream)oCr.ReportDocument.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); - //Response.Clear(); - //Response.Buffer = true; - //Response.ContentType = "application/pdf"; - //Response.AddHeader("Content-Disposition", "attachment;filename=Historial_Resultados.pdf"); - - //Response.BinaryWrite(oStream.ToArray()); - //Response.End(); + } else Response.Redirect("SinDatos.aspx", false); diff --git a/WebLab/Informes/HojasdeTrabajo/HTrabajoProtocolo2Horizontal.rpt b/WebLab/Informes/HojasdeTrabajo/HTrabajoProtocolo2Horizontal.rpt index 61d55423887df36ecb55e865df7793bbc8291ac5..5beb3223f27cb6766be2904440f1abed46b6fab9 100644 GIT binary patch delta 12913 zcmXw9qp$Dp?;ik>{isp79ys|MI1-pN*;qb5(P%vh%oZ{LKj-{#Z7bOY zEEHHc`4tQRyr1j^4gfA{eg)?Q0d7oYhLV;3uNBNs2c#du{t)kn@IR#bA>0qyeu(fx zp&ugtQ0j+BKUDf5$`7@E_+OPIk3eZkLj5>(AQvDvAY&kBAS)n;pEKc)z<$I5#0|vu zL!lovOe@xz{oMS||9=Vnm|MAw{~g%^Iy0FG3@ix-12Ed=eITsXM$=@_b4C41ONc(8 zvj-#F1&7b1=|oGkS5~N+%=KH#7BWX9u529&%N+_0J|6RXOK;YNu3or8wN)u@tA30;)kFro(rvxCzGu@~gr#Uw|;fC-oFqp){U0;z_h`Q|q-XBCt4i zRM4Teu;}Q}meZ$)RXVpAwBq{4QD z^#HDb^6R(l{qS%1f#f2#Z%rfC;(QjwdEk}{@!4+_UugrFr|hr{@$d-49Ki#>EpKUC zM8%S(y=~yMIk_pZ*DtEwWdH9d)*)Liy}u*C_4khGwO4{VsjOUAY#Wwxj9>|MHay#N zJG_;Z(jYWo%2EAXPAL<7PdW4#G)PocgMcfa0nf7rtz%aCE$_c2ZEM%JK&^1#>SQkg z%Cn4W$Gybi;ZsuKkTO6@aRxNc!MQ)Qla^FE(Qu+o*NCxXPh+m^x# zsgrXzFJ#vNgb8PNL@P-@#1lsyE`yeEdzeN9BJ*Gx5zOv+b(Mwq5RaHL*PxqKnv@$4 zg%ft-IB5lo3ygzgH9dmsfM8>%Ghj&VoBA)qc-uL#3vV@?Oz1;5cr)mq??ybojmJ3% zL?*V(_cce^}Kx;C8oc{;otzBuQ9pN zS!R+oll6Qjd1Jg?T}65z4)}kD(PT9HCZ$6D4v@-DDI(YKuqma#<}=@`BmkK{OfeO| zUIAo|UG_o66=Ry(q&7%?C8scY;l)N{`v{6DpGug8e4<_J za>%NVK9Ez_dhQH~6?aG=^6Z27wa5*<2AS}D>47GsdxR70IDa94ZbNqmA}Mpq%P|Ec zk@K81`go9H>O|s<7W-djfWIbmXj~5JP+A!uJSf64!H8^FC#5(PWC0qc0I=Y-ooape zzh|H_Ffg$&*=9_EG6>@t2uXL(MKDtGW@+fvj3D4I!WsD>l$yi`o)Q#A`Si+kvkF~% zyN$lI+uvonUg?;jL_)nL6_mc)iNi)+dmP!kN)c)1;y*e(rf=5> zdu*3=9D#p4YC4+S+@H}xm;9%96A6kty<9L01Jae_70B_-Rd}bzQ|uimcK0dsWbKLh z2;o6dpxAv=2_Vkq5*qR01OEU`*BMHJRWZHiEK|}9F_IC19RtF+Q8_9jPRDH{HMh(r z?-Sd-U)Jx!G`k{{$Wx*2yd7F_;u(?4c0H3-*jijYrb{h~WjjcDZ2$)4muI9H)A8u3p=^}2er00#m+dZ5R;m&vfP+rzk3c!rpa-j5e|fy( z?3u>`G5E*Q65<}fHrjBrQ@4;Dy)~rFx2= ziex=w8X-Qef$!W{6oJ=8KmpHJC`aD*-v|N52&1IA-tew)=C`U_#!2)X^XL2&l>@1<*K3Bwb&~?$SjY~~=&=|{wK~co!nP&zD*`xYg5V_Aj z01M4u*N-KfQPLWPG-kGkF!t7@ozK^rbx{}9s{#!FCNz{J#(UB_dwJuJA`L>T}ez{!WFxd*7@kou(g1n3IeHHPYso@ zF#-7tAOx^0zES2ewi&W;eDMtQVI|m;lfOKG+T6F0t@#gufqR0wFCM*$4uqG&5*=iZ zSU3+sT-U>lA{1apNOpEzsCKv%7-6#pTNCp-;pOH{zm=kQ2{~k$cI2iUAV9JDMDi3} zLafl7Neq)s=oEUAWF~A6_cJgu<{T)xLP4AntdO97x;vi1$E6JCNW-@b^Y%M^0z~%aYKe5hWMhBv#t?RIuO}GZN`ER}jbT zYHV4i$+>?@xBZcoA(xP zC&M)f{qkHYQlV^SmFzdj@F0u!#_!YcL2A_+;_iM)#Eg8`Z<#Ah z|1s%SX&9kkV1hEcU%|vER^-H7dwl884sH4r@PCGHMn;5)T(nrb{e;Vh58h|KbPiZ4 zl8M0xn)}geVBz~a|2J?0gZ?DhfMl)CsCYqnHM2{IZU%=c<4Qqz8L@nXnV6=<1~`x}`bw2xEX8;D z>2y_6EC&t75#}YU2eKzYxo_kZT(%H3jYJwGj5_V-q{XxfZ*#b$_3Q{u=N|YtT-|j( z{OBrtva#j7ujkiyyhFTK;SDeEtw=xsVw*mytJ%wrHrVLy^Y$IkU%n|5R7yU8^=@wexX;^ zfnJWTf+V(*!<>)B#ouqrr&x%@lJl+kD-_TtD*amxA+P1YgjTsO8j!s0Bk2T#SE1hA zXnqHD`vvuS2bYD#L*nHqQFLgs)S0|z<65N++t^6P_AyTRVn|yqUqh1x6~{w{2mh;K z?ut$mKZMB5*GzKKdxW8GZP?@kj9S7xS^Wv?so`C0gN1WaHW{>P%_hu6u_|l}nfj#L zaxTGn`LfAUT`86nJKY#TT#R3t)mL3(`T}zHMK~1FVCF# zpcL%L1J>}qD!7T?4w;&(+O3HA=kMa0mYG;vWalT-Tzw&R{8#uXYLwd9yhZ~LX@OvsZ`OV04RS?M)^@hti4${ zvr>yj$ofEPlBLO@MFe`|*hG!c>dieRp`9QoxokpUK4kh!5w zf<37ef!8%O!*8chJUZlNJm$a+=jHyHIcs)(1QL=JuG`dmXz ztQT9WC_Nrpn5GNS^BBGCA7-RY`kTvfJm%N2U(`_8-6J4`04qhs?|9r$b57##r;?#& z{xCw8`1pPV_N;W0;j-LiGc)#l*o?%BdP#!%zd{X6c}7+XDgeCO&2O&`sb|GffoQ?? z1mqWyD9v2r-n5}yHMU>Pui=}1BFpGZG=jay0|CKCiBGd|ud0%0ZWOUt>6@Q@Tx)fC`VLw+-f-)!%_ zI*9P&tu1zns0XK7Q?F%|bL0YMaI1@^HiQcQR(z<%07KME#&M5P-KE+^1jE4wod6Ws zS<24-KWo=snnH3~QLLB2pi|2bqXAPc>abk;^#v#Bt_r+x%%&gz~$H!)6=9=0s-Wy}nPs_$&TD76-N7FCw>6FXyTgHCUT@K+>33QFQ!Prj!c3whK(>s5o>P%3jxe z>nTvV$6h$ln%>|zfGA#cs0_b5$|2_C+V_4?!)5UOn}e9goV3#S8JIdr$WJ4zDg{FW z-;ZpC8TScL;s!ZLVBapOE(+2P5$CK2w>iq%Gdho9u-<5!4}cwE6kMPu&D z0S&C7(RT@|rFA&+swDdc`K@qcLBp^nfP+Z*Zqp%{^E2r8Z^-qa7^m5&MIippB;ApG z9BkKdGTEenl5;FEmN;a>;U`USnnyESudQRG+4qZsdWlwmuC{5P+@f!fcdG+mb#_8`ORmzANG8`lWI0~IaRPnd=Knf_3%!ZY5!tIc zNc;pll_4M;=$B6~+E%31zv|znv1qk6set;YfX5xoX8Pn47+}3)>j;^g?SV*!rXuE) zpmZ!__yf#1t;f3b! zU@|KnCbgMl@fv2OMrMj)&wY-lLZc7|Kd$8lhDgQc9CLP=9v11GFZ_8)0Q|2%P753ecT-qLB)Il z0-tXOB3QLA_mra&i-kkDsU%h15R*BCnz@tS=f`I9$L>guyYi7!k~6d=Mc+kx3cOp| z9Ypt2TFpEvMfX>#ib-<{GC<&8#6#+|KAvScFwj4Fwpm9mkYh2%=b_YN5H4elfnJ}A zbSD-;O>NM?Z68MMfA8x00fo1QhjMPO31F+l=na0iTN-gCmd1EUX?Z<2a~&@+78wj) ztLk(3>dO2Q9Su3W!6m~5jzHU-Bxg}32mI#UrOD^#lR%%UUwl-8zW@qla;gUZ;_R{63+9im@x61+=@lNDJ9fh&}VE95ZWks)ReI~g4Bk`ndU4Rq#%yww4 zo)(>8jJCkKg(l#U_687ulwnw&I`9d_h*Fj2B}^yMz8$FJO<|^ZpbmHlTRIroD1H{1 zLn~NMD;&_wp)F&`BVh5lJgP3&8I-t^KX*iOU&2MXmu`abRE$5~Q2((F6bkl0zHpPo z^0re*gixqL&0Qn3^iN{_JwjTx@#>Y47JJt10y(!;OH2idod^i(7+mAYrljwT(~Ihz zv429lw+GR<7-Gm!o5!x=p$87XD{!6!uZ>HtZe7C9?@!ef4K+u zGgU?>Uxm{}nQt8&T+3TDS*c2>?I|m4Kugym6f;o3$cL{Hm?|tgB#t-!FCdKy5#TJ5 zbm_0-$&Jpgb-*%8UMcp;;szRL?rjf`MqRb0hxgte(*5<2;+Y57v8|&r2rv^I9Cna0 z!oq3EJEp9b-Xmr!^kzh6&GMSg;8b>Gmdf?X!4HY!hg(N%&=7xhwoCpZ-J5 zJK8z*^A%o6)Q@!qMzI}riyUE&!o*1dA(iIlfeHb@niFyGyvG3- z=N4j%ae$WNTx;xR`|==CtL>CnImg|6GUn!vLE(t_D^7`jro_Zs>UJRNDYVu-w76h7 z`x=Wj?&K^)pI!kU<~44pm2o!hm<=rX(U>^KP~+*%#%f{SL2ifiT&#i_)dg2iO@8>p zGYi@izB>QLY1bPsp5U-O3&EmSYj0^DHF6WeRsqSUrP%G5#lX#i8z%P1n8`tRp?ESP zMn#uA=-^5;M8IjzVVKuulwn8&SFCqwgJx)xCUoO!J&1B_*n?=J%|<78B@vEFB2rug z+a$3_dZgkSu*UAiq>@MA*K|A=oic{O^=Sn>!T2n&mL~GYPN;&P48JjY@Rt-^j61mj zJb;rDzucTw3@lapAn|03o!~D)(@DLt5h0To%ZKq5wsG(zvO9k&AnYDLL6KIl zoOxs}iH3~^PRJFxX~l8q#c<_~McREFlLpRWVZ{vHbCQ!WyPz?KWc)!)FR8vkQ93A9 zUA$SbztK0pO0pJlEfzFu_5Jz@>H%KTkl7_Rh4-#-3BuAO(609XXx&gbHL?s}sso0K zgPk;o)+aEL(8Hs){E~El6+eyB2pZp>^l!5j*hs z_&$4KEmwdZ!73mo9fW{dL_L~ zji(4#hL!8`O4t+azIp<^W7kbFYe(U@$!;4{G}jt?@=Jyx>w{rbO#x)g!9^w&;*cOk z93(c;(2;Sn~lBn z2_dT3lpyn0ONy#EW5hD+St3!FfH>n?E^yvghH@}zA+KQMXeN!to#5Mq#a0XOIIZvx zCiwCh@{g$cJ`?a6J_GPgTB@t!ynDl+6OD$2z_pLizF3SX4BlyVv<>H#EmWvHym+T> z%h^0Q2DcJ5){d(*f#PvWvU~6GTA5)7=vCtF5&UUg{mZTS|=c#QN`&V)zlTC2f3vH(rpyc^jmcb^{4D!}5P z0~bVnyFOZd@8bs!xmzo6F$lL#nED|{P*0->hwaIu4aN#y^kqaA6sT^}JX8ZLO`Mud3^yk+B=7xXPl6KX8C7 z;}b*d3zLEi4tUC9y0pxv?kr@};Ymf))liz!_OfQ{q)}qqd~rjcXFXF&1uE+Vkp3Mr zD}|7}OWd(^yeJw=lH$)YCp@=|NlozPy;b!gMcpaU)rU(7t>UQNe><;MilBc|BG z>Hz)y&vId(>NVCJxU>VfHsH8i#_MbJ)CYHHZ&(tN)}D_VADlyoTyU^U;(b^*Yjf?u z`(p>`+$dHyCD4(xmCC62Yi@L}YqCmpRp*j$W7HG{%Id@i;brM9N^-wdZP8tas1vKZFw$C@d)5?V`ls` zEy=S!H({E=y8J1KpGU{Lx0P_)sK5%uuOLa!4zLu_h@h-nTA1vfo}}LUr8}JCWzRm5 z)2vUYezELTpAP!uWPYtl!kc=pBkDd>$4I&wDl<5dW4fvNFZM}^r^!pXu-MUsy@EXl zisni`+FKOwHW9*ABCC9!5t?SA@b%?p2j1U6JJII8N52GP2K|U;VcSAv|iJ+F8)GOtE4IO>Q>Gh4n zJ`|fB(mg1eg!DmNNDF~;<@|zH!xljgCBQ8}x3e`FP0MC}19H?gd(gSJ9BC?G1uk62 zaG}$I7plFw)W1HNrK++wK^FAnyGQ*DIljLG%4fv5fqm0xBrP&<=+XgnygZiPUz@V0 z^0Z(^3;Ybw5O8=GkD&fMS}(g!&AxK8>?Oc_H(kj;j#s4Q3}kx=6CJHk$O zF4t#Iw2&1+8?HbyfSDa`T(vUv1mpsiBm9gfdB0M4zSAexicdEjd`&Q(%oAG~20fa_`UvB)$ zZcr-M3U(=S0-s*=U;P|T;o>H#dbGtmKt|G=6^|3p1bCY@CRC`<;3pRM(xiyj_EUM1 zpvQ;fUn=NrXS{@@ny_gSAtg;Sn)VsNH~F$?Rmen^h16{KUc~zmkAt0U4nR>XfKs`K=$nh2o&vkeQ{<(Um>{&4a^DJBBC{dir!G zx|-#}+KD`;@O15>QuMrmS#4Tl0TI3sTp4A8JkC4(r*Lo8Jr z81)M=qpRh4Ftw*d%pE{WkW|mt(1IHndEpc~GmxL(BW_>|;d+MAfEdJ0m|ah3O6h^V zr$sE>&4yAWVdZEgoeItZd~2{^Mtm%SA^-?u3JK&$==s2}ot=q3qdyjZD}jW+Ntdj# zwj8aT(4FYZD|)ux(;P+_BWm%Q_(bc1oXoKF?bT5Og>N$&j;{pmaKfftIam95%+9EY;E4V;Z1J^a#D@9;^ri?#9V?JSxnq`n*|C_=CvB( zZNt$1+}4BZ%W>S#J)>Vk49GgQhEe4S!H0|59^7Sb>#O>v04nLPZd(&LD_~LoK}$=H zNM{Vh7rn;m%_o`4jMA@R<(KB%^hyH+=OmuZzbO-|Fifzv)j=KfenG{4{!_W<{zOBo zz+!QI3rlYl|LjPbr%?nz{8bnyUYNt`*09ARMl56@RCl&&L_Fw&Ttjjq472Pl8TN9h z7bV0qUMmBY01P1kkm$U$^p2O`XV-P76%MGSe)tr*6z`I-mJy?8v4& z$9s9jBe^ceEmU^!*GIGMg4M&T>u~Pr70J94ce2SLtgx9UGVl)srZ8lNfF{Wg>+cQ+ z@Er%i^Q%o7E0Zy)xOCM?Xt(_H>5S?3?J{!rGv9WYzG<`H>K%WctHz`L;x1fY?Go#w zya>@S1IWIdC0@7Bil?O#v!dLnr>|pR&ZKjwiSM#gD3I+6m|9nn`z@S$7UbUiMAl;R z8Gons%6h5E4axT&W%CN@*c7?Fe?P;bse_cAmP~mC&&9P}l=nf0n&3>=9A8Fl=(m zE6;|%H8wdI@woMrK#+qnt*chY4->)}rthiy%uipf6Ha>n{3^Q#yahIsQmW!g79wTH z-_)eI-+OyqLsK(e9TF4!S%Bk#Sr~$^0kFg`;v>j3*WqnH%t!V5VBTD(ix^*wyrj90 zA{!W-B`}Yuu)>9aheH_46QM&vrRGh(YYxu+E30YC#gW8>shL&>$7*?MPW#0I{jAl| zN+uf4{@v?cSxj!2R%oF^?}o%-Y~Kc`wM9C^33aFT-P#;4BoE-bVYi6{SM8SP0%Dsc z8ChWb)|+a_%?B`n98P=8w8kW!u^^ZR_nqp8&t$t&G(*fFWX(51*- z3noI=FQ53Gy^ZOEw7!VJw?@MOmKByolF0v9$YaX2>tS@OYs)yb#>hF`csOCiE>QP0 zQMyKLnbt-872htZowWu|_h#3*ZPI;1Nx@pEwuG;$Drm@)tH14>9PK8b0QAgRuGFAV zr^P2&GtLJqPR{|78^gxOzy=_l!T?b~)3J*I+U;r`FveF%uIuD+TDRCT#PR~!ua+37 z50~SXOhI(z+pdz_{$8&e&QOue#AK1qFfNu%@FhH0K765oZasnmEgiZbgyl3OG}ap# zM-rzYWw3gGNTx(mbR63g0FnaOXWht^Hsg$U14fqYS(6Kaufbwx{sAhpiIPo97mMpJ z(bdGV23`MC;9X-vXZQwFFJ(mfRzf-gA&}*EvtUk`J0{Lu=Bgc32eIB5($Zdbp}5V< zo@r$Y!YEMAMS)%3bB#+XZQsGT+yN35H~kyvP6f%)S3)VvH#p5*Kpe(Jq@&mRFD&4J z9XifY^p+48JUyS+eDA^N(50v|**v1IqRn@KLbQYGOJS?F#vJ}hx7n+cC%u|QOkyhi zqJCPf+u_(fL=dP9TxmTg4g3XpZUP+MLop3b^U#e~fc~?YuVnRFV4S;{L%9;jJf~UJm@TpDw_k>R^%``UVwp=5 z?_7uYBP63vFL!71J(_DK?&wzLJreC`-tO`-t_gUGfa6*Xz@G7_3mZz_nVg_ppjv;O zYMDeRYu3{zx@R5hYW#&RJt$!o;J>o4%l z#>~f0u+aBRIZ|fZbcvb2K)&S&!Ozlbj4^^b5Rw%IKng_p9JxJbSP5A9o62cSb}cB6 zAj8LOJ&d|#l>TQpXO+1*XM}#R%L|FGFeR)hwpByp($gNn~9(#84) zn3rz5kk4W(oiK0##Uj|ki)LGOXM`}*wqtt5PWcjwu~M9lD+!oZyQhI%6oUN@o+jt^ zTZ1%o*aFqN)OYjP)HW@Rj#9fFR{*QvJ}*5G#)3_&l06yuPJ07yKG<73Yn4_PRd8lI zkmM!@afFRPN-+Ldkpc>PNC6Ct-|a;KfP*^)Jenjp@Q4M=rGPTM#(hRj#wf`TE<~U_ zzrS{5Nb-=RwgO4go9`4->A2rVz2mY3aT&}#t(>izQj!g3ARa!**+m0VIe9kmO=57I zH{8QNb9|_PAe#sN%p*4zarSL>(@K|$tUpb4@fidM70NMCt}BDP!euh_xotTDXkiGp zERN{;{>8+{Pd!C43e@l1*gtTvlkuKU*q=i7L<|q{Rx4M7T#m2`4hd{cK`mvx3a@-*O< z64ya+iREHSH52P8Uf9VEA6>Jqu%Lpc;PjU%YqUjOc{2z~;8qux<&*7-#A0)qcm4u~ ziO}wzEkS$J3Bqp2#d#r;@H$^FDPq+k5XDx8F*0!!&QVqeDpGJlAwjo#5LK_re%{(^&x)G#-Sxwu4-)^EZ1 zkexL}HnKe^fCxRxRJk6S%gTl&zX2yoe0S4F(hYOMv$tn49#-nXn17EkMqw>QxruXe zypI}txl53bH9)@%J8;7We8}$`Qd#+RH9pc{WdV>@HyZDr+gxaZnN7%2SH*cAsBzkQ zA1|Y9rba;~oixza_wD-IgiK?fw)hUE*mh1Q3{dAahLCTX+77ST)#BlX5XypwlFp62 z#P)3p3;N@0obJmIB_e%K707)HVFxyG=7jYEBM%$MOragoe{Wy_9@@xbI#7Zlf6Mc6 zhq()Je2d=G;_QI<67%bLA*8^>8QH~=?@hBvNxjwWB6%Fc1*!RTAk5P1k33mN* z&PWH*^~=`H!nBP8g1?cB|6)I5K>d^A=#wEx(D<82)~e1Lk-*z)Zu2m^<;Gx2;-d9+ z7gYC<9J$^}k^4!>RX5}6Fbv600k3f4iuy_MAn(t(q-z{^}z z#Ni2us7=H+OZi~D=<+GLRY2<;OgE5f+;wf{JRiaAkoYMXkXj>+f%DHME5D1O(zFuC zzCLR;Bm4j!f$sX!Y`rJ1f?pXprRmnU@O$rZ&;pJP$LTCcs2i@|F$P~HNrRH{wq#(M zqMqDPSqD5A_!Z%C$)GmMA4t{$1SEhHvTA?5#f^KnF%mq)?szN)4L&wl#xH|-1 zdAsj5Smcn7inEpatNzqW?8YNck5%GrUbr@jS}g5tu}q+wyxl|CWCumMPTh+IE(^6? z5W|UBH3-c-fc3cpBiJ_-EYuhRLcW0oP5uOBd^qPA5KTzieRPoW40%giKdXcC*T0_X zJUZIb2kKS|Nl?xVB94OR>}d delta 12851 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 %jp~=jrsQ0`v>apruOI%*BqUDsBwxun-@5G zY*=Sr?UNP~gvlT2FN!%7jG~TV`*wnLasfZ^rE}Ktu+GFR-^&K&KA4S5{s>) zFaor)TCbHRt%62X-rZF5^|KGQGjtnr)CPZ3_QYr~4Fe^4Hv~a(lFohcf`g_mr%Xoy zb;XX{u)4*R`DF{is86+J8iSGYP6qGd(SErN1WzZ!kJD$R2Y2v_XQ8CZCIFqBrr<1y zOgnpI(!NMl$SMJf{}Ssxal_yEMt*c#^irm`bF#&2`KGl5Z)fzxEc(;6UA`ymDq){pQLQyyXS50G1wn%EE-Y;h-c#zfx3JipwIqOx$iuJn)yPa$d86g# zE(W!zos|3+uMf`4)8&$MHlRc2>9$Kwk5KG2mBSTCokejdlZqAp4&Hvwi=)|p%eISS zb(qfR`GD0d0>y0?LVYR|xJIkm`Ma%*O&XuMt|XBECg*4-O&)LNv_j1Qd z#4V@UQ_vV(fL*kwYDGI}TcJL*pu700_dU*3$S}C|U-*ICkN|;VU zxk_#zJMyH=b_@QC27nQ@JIe*GIM`Lc^OLN9uipJ0W0@5mvv8!5vaBxeN%Da{@04UL2ObZA z*O1}hrJ2a>!flpTT_I6>^dTu%9PMuyxM@p-xK>2!n-X|W08-JDu-LrL%m)p<{)iO2 z9Es=`wZ-+5M$40;XP7FM+5^-?{=|0_Z45PZw(EkqZd!IB)9L-p223L?9QTYVYVg#$?(rDnP^~hutAUnn z79?*{X?eUnfTr4cB|N;~Ipj;~OG|}A=WJZdEIf?fS-X#HRFc4^2vj)NB4Q+W=`z7^?48GKy~{3V}&AM9KUHjW>e$BgbA4rv&yt!h_RI diff --git a/WebLab/Informes/Informe.aspx b/WebLab/Informes/Informe.aspx index 9cf9458a..a6c55f61 100644 --- a/WebLab/Informes/Informe.aspx +++ b/WebLab/Informes/Informe.aspx @@ -271,7 +271,7 @@
-

+

diff --git a/WebLab/Informes/Informe.aspx.cs b/WebLab/Informes/Informe.aspx.cs index 45443b99..de25e7f7 100644 --- a/WebLab/Informes/Informe.aspx.cs +++ b/WebLab/Informes/Informe.aspx.cs @@ -628,12 +628,7 @@ private void VistaPreeliminar(object p, string accion) } if (accion == "PDF") { - - oCr.ReportDocument.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, nombrePDF); - - //oCr.ReportDocument.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, nombrePDF+".pdf"); - - + oCr.ReportDocument.ExportToHttpResponse(ExportFormatType.PortableDocFormat, Response, true, nombrePDF); } else { diff --git a/WebLab/Protocolos/ProcesaRenaper.aspx.cs b/WebLab/Protocolos/ProcesaRenaper.aspx.cs index ca2083d8..b9031bc8 100644 --- a/WebLab/Protocolos/ProcesaRenaper.aspx.cs +++ b/WebLab/Protocolos/ProcesaRenaper.aspx.cs @@ -12,7 +12,7 @@ using System.Web.Script.Serialization; using Business.Data; using NHibernate; -using Business.Data.Laboratorio; +using Business.Data.Laboratorio; using NHibernate.Expression; using System.Collections; using System.Data; @@ -24,6 +24,7 @@ using System.Net.Http; using System.Security.Cryptography.X509Certificates; using System.Security.Cryptography; +using Newtonsoft.Json; namespace WebLab.Protocolos { @@ -280,7 +281,8 @@ protected void Page_Load(object sender, EventArgs e) if (!conOK)// si no funcionó la conexion con renaper se fija se está activado MPI if (oCon.ConectaMPI) { - conOK = SolicitarServicioMPI(); + // conOK = SolicitarServicioMPI(); + conOK = ConectarMPIXRoad(); if (!conOK) HabilitaCargaManual(); } @@ -289,7 +291,8 @@ protected void Page_Load(object sender, EventArgs e) { if (oCon.ConectaMPI) { - conOK = SolicitarServicioMPI(); + conOK = ConectarMPIXRoad(); + ///conOK = SolicitarServicioMPI(); if (!conOK) HabilitaCargaManual(); } @@ -767,6 +770,158 @@ private bool SolicitarServicio() return ok; } + private bool ConectarMPIXRoad() + { + bool ok = false; + try + { + string tipo = "MPI"; + imgAndes.Visible = false; + imgRenaper.Visible = false; lblFechaDomicilio.Visible = false; + GrabarLogAcceso(tipo, Request["dni"].ToString()); + + long nrodocumento = long.Parse(Request["dni"].ToString()); + // string sexo = Request["sexo"].ToString(); + + string rutaCert = ConfigurationManager.AppSettings["RutaCert"].ToString(); + string BaseUrl = "https://xroadss.andes.gob.ar/r1/OPTIC/GOB/GOB00008/GP-SALUD/MPI";///ConfigurationManager.AppSettings["BaseUrlXroad"].ToString(); + string Serv = "?identifier=http://www.renaper.gob.ar;";// GP-RENAPER/WS_RENAPER_DOCUMENTO/"; + string clie = "OPTIC/GOB/GOB00008/GP-SALUD";//ConfigurationManager.AppSettings["ClienteXroad"].ToString();//"OPTIC/GOB/GOB00008/GP-SALUD/MPI";// + string param = nrodocumento.ToString(); ///+ "/" + sexo.ToUpper(); + string host = BaseUrl + Serv + param; + + ServicePointManager.Expect100Continue = true; + ServicePointManager.ServerCertificateValidationCallback = (snder, cert, chain, error) => true; + // ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3; + ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; + + HttpWebRequest req = (HttpWebRequest)WebRequest.Create(host); + + //certificado + X509Certificate certificate = new X509Certificate(rutaCert, "", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.MachineKeySet + | X509KeyStorageFlags.PersistKeySet); + + req.ClientCertificates = new X509CertificateCollection() { certificate }; + req.ContentType = "application/json"; + req.AllowAutoRedirect = true; + req.Timeout = 10 * 1000; + req.Method = "GET"; + req.Headers.Add("X-Road-Client", clie); + + + + + using (WebResponse response = req.GetResponse()) + { + JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); + + using (Stream strReader = response.GetResponseStream()) + { + + using (StreamReader objReader = new StreamReader(strReader)) + { + + string responseBody = objReader.ReadToEnd(); + + var lista = JsonConvert.DeserializeObject>(responseBody); + var resultado2 = lista?.FirstOrDefault(); + + if (resultado2 != null) + { + lblValidador.Visible = true; + lblValidador.Text = "Paciente VALIDADO POR " + tipo; + ok = true; + + txtDNI.Text = Request["dni"]?.ToString(); + + // Nombre y apellido + var nombreData = resultado2.Name?.FirstOrDefault(); + txtApellido.Text = nombreData?.Family?.FirstOrDefault()?.ToUpper() ?? ""; + txtNombre.Text = string.Join(" ", nombreData?.Given ?? new List()).ToUpper(); + + // Fecha nacimiento + txtFechaNacimiento.Value = resultado2.BirthDate.ToString("dd/MM/yyyy"); + + // Domicilio (toma el primero) + var direccion = resultado2.Address?.FirstOrDefault(); + + txtCalle.Value = direccion?.Line?.FirstOrDefault() ?? "SIN DATOS"; + txtCiudad.Value = string.IsNullOrEmpty(direccion?.City) ? "SIN DATOS" : direccion.City; + txtProvincia.Value = string.IsNullOrEmpty(direccion?.State) ? "SIN DATOS" : direccion.State; + txtPais.Value = string.IsNullOrEmpty(direccion?.Country) ? "SIN DATOS" : direccion.Country; + txtCodigoPostal.Value = string.IsNullOrEmpty(direccion?.PostalCode) ? "SIN DATOS" : direccion.PostalCode; + + // CUIL + txtCuil.Value = resultado2.Identifier? + .FirstOrDefault(x => x.System.Contains("cuil"))?.Value ?? ""; + + // Campos que ya no existen en este JSON + txtBarrio.Value = "SIN DATOS"; + fallecimiento.Text = ""; + fechaDomicilio.Text = ""; + + txtTelefono.Value = resultado2.Telecom? + .Where(x => x.System == "phone") + .OrderBy(x => x.Rank) + .FirstOrDefault() + ?.Value ?? "SIN DATOS"; + + var sexo = resultado2.Gender?.ToLower(); + + if (sexo == "female") + { + txtSexo.Value = "FEMENINO"; + ddlSexo.SelectedValue = "2"; + } + else if (sexo == "male") + { + txtSexo.Value = "MASCULINO"; + ddlSexo.SelectedValue = "3"; + } + else if (sexo == "other") + { + txtSexo.Value = "X"; + ddlSexo.SelectedValue = "0"; + } + else + { + txtSexo.Value = "SIN DATOS"; + ddlSexo.SelectedValue = "0"; + } + /// traer al paciente si no es nuevo, es modificacion + int id = Convert.ToInt32(Request.QueryString["id"]); + //datos del Paciente + Paciente pac = new Paciente(); + if (id != 0) pac = (Paciente)pac.Get(typeof(Paciente), id); + txtTelefono.Value = pac.InformacionContacto; + + + } + else + ok = false; + + + + } + response.Close(); + } + + } + + + } + catch (WebException ex) + { + ok = false; + string mensaje = ex.ToString(); + + } + + + return ok; + + } + public void GrabarLogAcceso(string servicio, string dni) { try @@ -792,6 +947,83 @@ INSERT INTO LAB_LogAccesoServicio { } } + public class ResultadoMPIModel + { + [JsonProperty("resourceType")] + public string ResourceType { get; set; } + + [JsonProperty("identifier")] + public List Identifier { get; set; } + + [JsonProperty("active")] + public bool Active { get; set; } + + [JsonProperty("name")] + public List Name { get; set; } + + [JsonProperty("telecom")] + public List Telecom { get; set; } + + [JsonProperty("gender")] + public string Gender { get; set; } + + [JsonProperty("birthDate")] + public DateTime BirthDate { get; set; } + + [JsonProperty("address")] + public List Address { get; set; } + } + public class IdentifierRenaper + { + [JsonProperty("system")] + public string System { get; set; } + + [JsonProperty("value")] + public string Value { get; set; } + } + public class NameRenaper + { + [JsonProperty("use")] + public string Use { get; set; } + + [JsonProperty("text")] + public string Text { get; set; } + + [JsonProperty("family")] + public List Family { get; set; } + + [JsonProperty("given")] + public List Given { get; set; } + } + public class TelecomRenaper + { + [JsonProperty("system")] + public string System { get; set; } // phone, email + + [JsonProperty("value")] + public string Value { get; set; } + + [JsonProperty("rank")] + public int Rank { get; set; } + } + public class AddressRenaper + { + [JsonProperty("line")] + public List Line { get; set; } + + [JsonProperty("city")] + public string City { get; set; } + + [JsonProperty("state")] + public string State { get; set; } + + [JsonProperty("postalCode")] + public string PostalCode { get; set; } + + [JsonProperty("country")] + public string Country { get; set; } + } + protected void btnConfirmar_Click(object sender, EventArgs e) { if (validadatos()) @@ -799,15 +1031,10 @@ protected void btnConfirmar_Click(object sender, EventArgs e) { if (validamail()) { - //Configuracion oC = new Configuracion(); - - //oC = (Configuracion)oC.Get(typeof(Configuracion), 1); // "IdEfector", oUser.IdEfector); - + Utility oUtil = new Utility(); - ////instancio el usuario - //Usuario us = new Usuario(); - //us = (Usuario)us.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); + int id = Convert.ToInt32(Request.QueryString["id"]); //datos del Paciente diff --git a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs index e3942200..26e0d81c 100644 --- a/WebLab/Protocolos/ProtocoloEdit2.aspx.cs +++ b/WebLab/Protocolos/ProtocoloEdit2.aspx.cs @@ -3649,71 +3649,7 @@ private void SelectedEfector() } - //private void CargarSolicitantesInternos() - //{ - // Utility oUtil = new Utility(); - // ///Carga de combos de Medicos Solicitantes - // string m_ssql = "SELECT idProfesional, apellido + ' ' + nombre AS nombre FROM Sys_Profesional ORDER BY apellido, nombre "; - // oUtil.CargarCombo(ddlEspecialista, m_ssql, "idProfesional", "nombre"); - // ddlEspecialista.Items.Insert(0, new ListItem("No identificado", "0")); - // ddlEspecialista.UpdateAfterCallBack = true; - // //imgCrearSolicitante.Visible = false; - // //imgCrearSolicitante.UpdateAfterCallBack = true; - //} - - //private void CargarSolicitantesExternos(string m_solicitante) - //{ - // Utility oUtil = new Utility(); - - // ///Carga de combos de solicitantes expertos - // string m_ssql = "select idSolicitanteExterno, apellido + ', ' + nombre as nombre from Lab_SolicitanteExterno where baja=0 order by apellido, nombre"; - // oUtil.CargarCombo(ddlEspecialista, m_ssql, "idSolicitanteExterno", "nombre"); - // ddlEspecialista.Items.Insert(0, new ListItem("No identificado", "0")); - // if (m_solicitante != "") ddlEspecialista.SelectedValue = m_solicitante; - // ddlEspecialista.UpdateAfterCallBack = true; - // //imgCrearSolicitante.Visible = true; - // //imgCrearSolicitante.UpdateAfterCallBack = true; - //} - - //protected void btnGuardarSolicitante_Click(object sender, EventArgs e) - //{ - // if (Page.IsValid) - // { - // GuardarSolicitanteExterno(); - - // LimpiarDatosSolicitante(); - // //Panel1.Visible = false; - // //Panel1.UpdateAfterCallBack = true; - // } - //} - - //private void GuardarSolicitanteExterno() - //{ - // Usuario oUser = new Usuario(); - // SolicitanteExterno oRegistro = new SolicitanteExterno(); - // Configuracion oC = new Configuracion(); oC = (Configuracion)oC.Get(typeof(Configuracion), "IdConfiguracion", 1); - // oRegistro.IdEfector = oC.IdEfector; - // oRegistro.Matricula = txtMatricula.Text; - // oRegistro.Apellido = txtApellidoSolicitante.Text; - // oRegistro.Nombre = txtNombreSolicitante.Text; - // oRegistro.IdUsuarioRegistro = (Usuario)oUser.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - // oRegistro.FechaRegistro = DateTime.Now; - // oRegistro.Save(); - // CargarSolicitantesExternos(oRegistro.IdSolicitanteExterno.ToString()); - //} - - //protected void btnCancelarSolicitante_Click(object sender, EventArgs e) - //{ - // LimpiarDatosSolicitante(); - - //} - - //private void LimpiarDatosSolicitante() - //{ - // txtMatricula.Text = ""; - // txtApellidoSolicitante.Text = ""; - // txtNombreSolicitante.Text = ""; - //} + protected void gvLista_SelectedIndexChanged(object sender, EventArgs e) { @@ -3859,18 +3795,7 @@ private void BuscarNombreDiagnostico() ISession m_session = NHibernateHttpModule.CurrentSession; if (oC.NomencladorDiagnostico == 0) { - //ICriteria crit = m_session.CreateCriteria(typeof(Cie10)); - //crit.Add(Expression.Sql(" Nombre like '%" + txtNombreDiagnostico.Text + "%' order by Nombre")); - - //IList items = crit.List(); - - //foreach (Cie10 oDiagnostico in items) - //{ - // ListItem oDia = new ListItem(); - // oDia.Text = oDiagnostico.Codigo + " - " + oDiagnostico.Nombre; - // oDia.Value = oDiagnostico.Id.ToString(); - // lstDiagnosticos.Items.Add(oDia); - //} + string m_strSQL = @"select id, codigo + ' -' + nombre from sys_cie10 (nolock) where tipo='DIAG' and Nombre like '%" + txtNombreDiagnostico.Text.Trim() + "%' order by Nombre"; @@ -4618,17 +4543,7 @@ private bool VerificaObligatoriedadFIS() } - //private bool VerificarFechaPacienteMuestra() - //{ - // Paciente oPaciente = new Paciente(); - // oPaciente = (Paciente)oPaciente.Get(typeof(Paciente), int.Parse(HFIdPaciente.Value)); - - // string tieneingreso = oPaciente.GetFechaProtocolosReciente(Request["idServicio"].ToString(),ddlMuestra.SelectedValue); - // if (tieneingreso==txtFecha.Value) return false; - // else return true; - //} - - + private bool VerificarAnalisisComplejosContenidos(string listaCodigo) @@ -4666,17 +4581,6 @@ private bool VerificarAnalisisComplejosContenidos(string listaCodigo) - //protected void lnkReimprimirComprobante_Click(object sender, EventArgs e) - //{ - // Business.Data.Laboratorio.Protocolo oRegistro = new Business.Data.Laboratorio.Protocolo(); - // oRegistro = (Business.Data.Laboratorio.Protocolo)oRegistro.Get(typeof(Business.Data.Laboratorio.Protocolo), int.Parse(Request["idProtocolo"].ToString())); - - // ////Imprimir Comprobante para el paciente - // Imprimir(oRegistro); - - - - //} protected void lnkReimprimirCodigoBarras_Click(object sender, EventArgs e) { @@ -4752,15 +4656,7 @@ private void Avanzar(int avance) } } - } - //if (avance == 1) - //{ - // ProtocoloNuevo = ProtocoloActual+1; - //} - //else //retrocede - // ProtocoloNuevo = ProtocoloActual - 1; - - + } ISession m_session = NHibernateHttpModule.CurrentSession; ICriteria crit = m_session.CreateCriteria(typeof(Protocolo)); diff --git a/WebLab/Resultados/ResultadoBusqueda.aspx b/WebLab/Resultados/ResultadoBusqueda.aspx index 06d8bd7a..4bb0fd69 100644 --- a/WebLab/Resultados/ResultadoBusqueda.aspx +++ b/WebLab/Resultados/ResultadoBusqueda.aspx @@ -349,7 +349,7 @@ -

+


diff --git a/WebLab/Resultados/ResultadoEdit2.aspx b/WebLab/Resultados/ResultadoEdit2.aspx index 63d0c042..dbeda29e 100644 --- a/WebLab/Resultados/ResultadoEdit2.aspx +++ b/WebLab/Resultados/ResultadoEdit2.aspx @@ -728,7 +728,7 @@ - + diff --git a/WebLab/Resultados/ResultadoView.aspx b/WebLab/Resultados/ResultadoView.aspx index d9fb1dce..80b242d0 100644 --- a/WebLab/Resultados/ResultadoView.aspx +++ b/WebLab/Resultados/ResultadoView.aspx @@ -336,8 +336,11 @@ - - + + +
 
+ + @@ -354,6 +357,8 @@ > + + @@ -368,10 +373,10 @@
- + <%-- - + --%> @@ -380,7 +385,7 @@ -

 

+

@@ -448,8 +453,8 @@ - + <%-- --%> diff --git a/WebLab/Resultados/ResultadoView.aspx.cs b/WebLab/Resultados/ResultadoView.aspx.cs index 1f0eb12c..f0884e4e 100644 --- a/WebLab/Resultados/ResultadoView.aspx.cs +++ b/WebLab/Resultados/ResultadoView.aspx.cs @@ -88,11 +88,7 @@ protected void Page_PreInit(object sender, EventArgs e) } } - //protected void Page_UnLoad(object sender, EventArgs e) - //{ - // oCr.Dispose(); - //} - + protected void Page_Load(object sender, EventArgs e) { @@ -115,7 +111,7 @@ private void Inicializar() pnlAntecedentes.Visible = false; - pnlHC.Visible = true; + // pnlHC.Visible = true; if (Session["validado"].ToString() == "1") lblTitulo.Text = "HISTORIAL DE RESULTADOS"; else @@ -206,14 +202,9 @@ private void CargarGrilla() if (Request["Operacion"].ToString() == "HC") m_strSQL += " order by idProtocolo desc "; // desde el mas reciente al mas antiguo. - else - { - // Configuracion oC = new Configuracion(); oC = (Configuracion)oC.Get(typeof(Configuracion), "IdConfiguracion", 1); - //if (oC.TipoNumeracionProtocolo == 0) - m_strSQL += " order by idProtocolo "; - //if (oC.TipoNumeracionProtocolo == 1) m_strSQL += " order by numerodiario "; - //if (oC.TipoNumeracionProtocolo == 2) m_strSQL += " order by prefijosector, numerosector "; - } + else + m_strSQL += " order by idProtocolo "; + DataSet Ds = new DataSet(); @@ -273,18 +264,16 @@ private void MuestraDatos(string p) if (oRegistro != null) { - //Configuracion oCon = new Configuracion(); - //oCon = (Configuracion)oCon.Get(typeof(Configuracion), "IdEfector", oRegistro.IdEfector); - //Image1.= oRegistro.getQRResultados(oCon); - + HFIdProtocolo.Value = p; //Actualiza los datos de los objetos : alta o modificacion . lblEfector.Text = oRegistro.IdEfector.Nombre; oRegistro.GrabarAuditoriaProtocolo("Consulta", int.Parse(Session["idUsuario"].ToString())); - if (oRegistro.tieneAdjuntoProtocoloVisible()) - { imgAdjunto.Visible = true; spanadjunto.Visible = true; } - else - { imgAdjunto.Visible = false; spanadjunto.Visible = false; } + + + bool tieneAdjunto = oRegistro.tieneAdjuntoProtocoloVisible(); + imgAdjunto.Visible = tieneAdjunto; + spanadjunto.Visible = tieneAdjunto; if ((oRegistro.IdTipoServicio.IdTipoServicio == 3) || (oRegistro.IdTipoServicio.IdTipoServicio == 5)) //Microbiologia @@ -313,7 +302,7 @@ private void MuestraDatos(string p) lblCovid.Visible = true; Caracter oCaracter = new Caracter(); oCaracter = (Caracter)oCaracter.Get(typeof(Caracter), oRegistro.IdCaracter); - lblCovid.Text = "Clasificación Covid-19: " + oCaracter.Nombre; + lblCovid.Text = "Clasificación SNVS: " + oCaracter.Nombre; if (oRegistro.FechaInicioSintomas.Year != 1900) lblCovid.Text = lblCovid.Text + " - F. Inicio Síntomas: " + oRegistro.FechaInicioSintomas.ToShortDateString(); @@ -368,28 +357,17 @@ private void MuestraDatos(string p) lblUsuario.Text = oRegistro.IdUsuarioRegistro.Apellido; lblFechaRegistro.Text = oRegistro.FechaRegistro.ToShortDateString() + " " + oRegistro.FechaRegistro.ToShortTimeString(); - //int len = oRegistro.FechaRegistro.ToString().Length - 11; - //lblHoraRegistro.Text = oRegistro.FechaRegistro.ToString().Substring(11, oRegistro.FechaRegistro.ToString().Length - 11); + lblFecha.Text = oRegistro.Fecha.ToShortDateString(); lblProtocolo.Text = oRegistro.Numero.ToString(); - //hplProtocolo.NavigateUrl = "../Protocolos/ProtocoloEdit2.aspx?idServicio=" + oRegistro.IdTipoServicio.IdTipoServicio.ToString()+ "&Operacion=Modifica&idProtocolo=" +oRegistro.IdProtocolo.ToString(); - - //if (oRegistro.IdEfector == oRegistro.IdEfectorSolicitante) - lblOrigen.Text = oRegistro.IdOrigen.Nombre; + lblOrigen.Text = oRegistro.IdOrigen.Nombre; //else lblSolicitante.Text = oRegistro.IdEfectorSolicitante.Nombre; if (oRegistro.MatriculaEspecialista != "-1") lblMedico.Text = oRegistro.Especialista + " MP:" + oRegistro.MatriculaEspecialista; - - //lblPrioridad.Text = oRegistro.IdPrioridad.Nombre; - // if (oRegistro.IdPrioridad.Nombre == "URGENTE") - // { - // lblPrioridad.ForeColor = Color.Red; - // lblPrioridad.Font.Bold = true; - // } - - //lblSector.Text = oRegistro.IdSector.Nombre; + + if (oRegistro.Sala != "") lblOrigen.Text += " Sala: " + oRegistro.Sala; if (oRegistro.Cama != "") lblOrigen.Text += " Cama: " + oRegistro.Cama; @@ -448,14 +426,12 @@ private void MuestraDatos(string p) } - - - + private void LlenarTabla(string p) { - // SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection; - SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura + string conexion = ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString; + SqlConnection conn = new SqlConnection(conexion); ///Performance: conexion de solo lectura DataSet Ds = new DataSet(); SqlCommand cmd = new SqlCommand(); cmd.CommandType = CommandType.StoredProcedure; @@ -467,13 +443,8 @@ private void LlenarTabla(string p) SqlDataAdapter da = new SqlDataAdapter(cmd); - da.Fill(Ds); - - - //int cantidadResultadosValidados = Ds.Tables[0].Rows.Count; - //if (cantidadResultadosValidados > 0) - - //{ + da.Fill(Ds); + string s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator; @@ -544,26 +515,12 @@ private void LlenarTabla(string p) else lblCargadoPor.Text = "ESTADO"; - objCellPersona_TITULO.Controls.Add(lblCargadoPor); - - - /////observaciones - //if (Request["Operacion"].ToString() == "Valida") - //{ - - + objCellPersona_TITULO.Controls.Add(lblCargadoPor); objFila_TITULO.Cells.Add(objCellAnalisis_TITULO); - objFila_TITULO.Cells.Add(objCellResultado_TITULO); - - - - - objFila_TITULO.Cells.Add(objCellValoresReferencia_TITULO); - - + objFila_TITULO.Cells.Add(objCellResultado_TITULO); + objFila_TITULO.Cells.Add(objCellValoresReferencia_TITULO); objFila_TITULO.Cells.Add(objCellPersona_TITULO); objFila_TITULO.Cells.Add(objCellResultadoAnterior_TITULO); - objFila_TITULO.CssClass = "myLabelIzquierda"; objFila_TITULO.BackColor = Color.Gainsboro; @@ -576,7 +533,41 @@ private void LlenarTabla(string p) int tablas = Ds.Tables.Count; if (tablas > 0) - { + { + + ////Caro PF: Cache de resultado item + + ISession session = NHibernateHttpModule.CurrentSession; + ///CARO PF: traer detalleprotocolos y derivaciones antes del for para no ir a la base N veces + var idsDetallesList = Ds.Tables[0].AsEnumerable() + .Select(r => r.Field("idDetalleProtocolo")) + .ToList(); + + var detallesList = session.CreateCriteria(typeof(DetalleProtocolo)) + .Add(Expression.In("IdDetalleProtocolo", idsDetallesList.ToArray())) + .List() + .Cast() + .ToList(); + + var detallesDict = detallesList + .ToDictionary(d => d.IdDetalleProtocolo); + + // Traer todas las Derivaciones juntas + var derivacionesList = session.CreateCriteria(typeof(Derivacion)) + .CreateAlias("IdDetalleProtocolo", "dp") + .Add(Expression.In("dp.IdDetalleProtocolo", idsDetallesList.ToArray())) + .List() + .Cast() + .ToList(); + + var derivacionesDict = derivacionesList + .ToDictionary(d => d.IdDetalleProtocolo.IdDetalleProtocolo); + /// CARO PF : fin + + Protocolo oRegistro = new Protocolo(); + oRegistro = (Protocolo)oRegistro.Get(typeof(Business.Data.Laboratorio.Protocolo), int.Parse(p)); + var resultadosAnteriores = oRegistro.ObtenerResultadosAnteriores(conexion); + for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { //decimal m_minimoReferencia=-1; @@ -630,35 +621,24 @@ private void LlenarTabla(string p) TableCell objCellPersona = new TableCell(); TableCell objCellObservaciones = new TableCell(); - decimal x = 0; - - if (m_area != pivot_Area) ///poner titulo del area { TableRow objRow = new TableRow(); TableCell objCell = new TableCell(); - Label lbl0 = new Label(); - //lbl0.ForeColor = Color + Label lbl0 = new Label(); lbl0.Text = m_area.ToUpper(); lbl0.TabIndex = short.Parse("500"); lbl0.Font.Bold = true; - Master.FindControl("ContentPlaceHolder1").FindControl("Panel1").Controls.Add(lbl0); objCell.Controls.Add(lbl0); - //if (Request["Operacion"].ToString() == "HC") - // objCell.ColumnSpan = 8; - //else objCell.ColumnSpan = 8; - objRow.BackColor = Color.Beige; objRow.HorizontalAlign = HorizontalAlign.Center; - objRow.Cells.Add(objCell); - // objRow.CssClass = "myLabelIzquierda"; + objRow.Cells.Add(objCell); tContenido.Controls.Add(objRow); - pivot_Area = m_area; } @@ -691,20 +671,14 @@ private void LlenarTabla(string p) lblSinMuestra.TabIndex = short.Parse("500"); lblSinMuestra.Text = "Sin Muestra";// +oItem.IdEfectorDerivacion.Nombre; /// Ds.Tables[0].Rows[i].ItemArray[1].ToString(); lblSinMuestra.Font.Italic = true; - lblSinMuestra.ForeColor = Color.Blue; - // objCellResultado.ColumnSpan = 5; + lblSinMuestra.ForeColor = Color.Blue; objCellResultado.Controls.Add(lblSinMuestra); } } - - - Label lbl1 = new Label(); if (m_hijo == m_titulo) lbl1.Text = m_hijo; else lbl1.Text = "   " + m_hijo; - - - + lbl1.TabIndex = short.Parse("500"); lbl1.ForeColor = Color.Black; lbl1.Font.Size = FontUnit.Point(9); @@ -717,6 +691,21 @@ private void LlenarTabla(string p) objCellAnalisis.Controls.Add(lbl1); + + /* var row = Ds.Tables[0].Rows[i]; + int idDetalle = Convert.ToInt32(row["idDetalleProtocolo"]); + */ + DetalleProtocolo oDetalle; + detallesDict.TryGetValue(i_iddetalleProtocolo, out oDetalle); + + Derivacion oDeriva; + derivacionesDict.TryGetValue(i_iddetalleProtocolo, out oDeriva); + //fin + Item oItem = new Item(); + oItem = oDetalle.IdSubItem; // (Item)oItem.Get(typeof(Item), m_idItem); + + + /*antes / DetalleProtocolo oDetalle = new DetalleProtocolo(); oDetalle = (DetalleProtocolo)oDetalle.Get(typeof(DetalleProtocolo), i_iddetalleProtocolo); @@ -725,7 +714,7 @@ private void LlenarTabla(string p) //DetalleProtocolo oDetalle = new DetalleProtocolo(); //oDetalle = (DetalleProtocolo)oDetalle.Get(typeof(DetalleProtocolo), i_iddetalleProtocolo); - + fin antes*/ // bool es_Bacteriologia = false; string observacionesDetalle = ""; @@ -733,11 +722,12 @@ private void LlenarTabla(string p) /// observacionesDetalle = oDetalle.Observaciones; // m_usuariovalida += " " + oDetalle.FechaValida.ToShortDateString(); + + /*antes Derivacion oDeriva = new Derivacion(); oDeriva = (Derivacion)oDeriva.Get(typeof(Derivacion), "IdDetalleProtocolo", oDetalle); - if (oDeriva != null) /// esta pendiente - - //if (oItem.IdEfectorDerivacion != oItem.IdEfector) //es derivado + fin antes*/ + if (oDeriva != null) /// esta pendiente { Label lblDerivacion = new Label(); lblDerivacion.Font.Italic = true; @@ -745,41 +735,11 @@ private void LlenarTabla(string p) //Verifica el estado de la derivacion string estadoDerivacion = ""; - //if (i_iddetalleProtocolo != 0) - //{ - // DetalleProtocolo oDetalle = new DetalleProtocolo(); - // oDetalle = (DetalleProtocolo)oDetalle.Get(typeof(DetalleProtocolo), i_iddetalleProtocolo); - - - - // observacionesDetalle = oDetalle.Observaciones; - // m_usuariovalida += " " + oDetalle.FechaValida.ToShortDateString(); - // Derivacion oDeriva = new Derivacion(); - // oDeriva = (Derivacion)oDeriva.Get(typeof(Derivacion), "IdDetalleProtocolo", oDetalle); - // if (oDeriva == null) /// esta pendiente - // { - // estadoDerivacion = "Pendiente de Derivacion"; - // lblDerivacion.ForeColor = Color.Red; - // } - // else - // { - /* if (oDeriva.Estado == 0) /// pendiente - { - estadoDerivacion = "Pendiente de Derivacion"; - lblDerivacion.ForeColor = Color.Red; - } - if (oDeriva.Estado == 1) /// enviado - estadoDerivacion = oDetalle.ResultadoCar; // "Derivado: " + oItem.GetEfectorDerivacion(oCon.IdEfector); - if (oDeriva.Estado == 2) /// no enviado - estadoDerivacion = oDetalle.ResultadoCar; //" No Derivado. " + oDeriva.Observacion; - lblDerivacion.Font.Bold = true;*/ + estadoDerivacion = oDetalle.ResultadoCar; if (oDeriva.Resultado != "") estadoDerivacion += " - Resultado Informado: " + oDeriva.Resultado; - - //} - - //} + lblDerivacion.Text = estadoDerivacion; objCellResultado.ColumnSpan = 1; @@ -810,9 +770,7 @@ private void LlenarTabla(string p) //if (Request["Operacion"].ToString() != "HC") if (m_conResultado!= "False") { - // DetalleProtocolo oDetalle = new DetalleProtocolo(); - // oDetalle = (DetalleProtocolo)oDetalle.Get(typeof(DetalleProtocolo), i_iddetalleProtocolo); - + Anthem.GridView Gd1 = new Anthem.GridView(); Gd1.ID = m_idItem.ToString(); ProtocoloLuminex oFusion = new ProtocoloLuminex(); @@ -846,11 +804,8 @@ private void LlenarTabla(string p) if (i_iddetalleProtocolo != 0) { - if (i_iddetalleProtocolo != 9999999) - { - //DetalleProtocolo oDetalle = new DetalleProtocolo(); - //oDetalle = (DetalleProtocolo)oDetalle.Get(typeof(DetalleProtocolo), i_iddetalleProtocolo); - + //if (i_iddetalleProtocolo != 9999999) + //{ m_usuariovalida += " " + oDetalle.FechaValida.ToShortDateString(); if (Observaciones != "") { @@ -874,31 +829,32 @@ private void LlenarTabla(string p) if (oDetalle.IdProtocolo.IdTipoServicio.IdTipoServicio!=5) { - string resultadoAnterior = oDetalle.BuscarResultadoAnterior(oDetalle.IdSubItem, oDetalle.IdItem, false); - if (resultadoAnterior != "") - { + //string resultadoAnterior = oDetalle.BuscarResultadoAnterior(oDetalle.IdSubItem, oDetalle.IdItem, false); + + string resultadoAnterior = ""; + + if (resultadosAnteriores.ContainsKey(oDetalle.IdSubItem.IdItem)) + { + resultadoAnterior = resultadosAnteriores[oDetalle.IdSubItem.IdItem]; + } + + if (resultadoAnterior != "") + { hayAntecedente = true; Label olblResultadoAnterior = new Label(); olblResultadoAnterior.TabIndex = short.Parse("500"); olblResultadoAnterior.Font.Size = FontUnit.Point(8); olblResultadoAnterior.CssClass = "myLittleLink"; olblResultadoAnterior.Attributes.Add("onClick", "javascript: AntecedenteView (" + oDetalle.IdSubItem.IdItem.ToString() + "," + oDetalle.IdProtocolo.IdPaciente.IdPaciente.ToString() + ",790,540); return false"); - olblResultadoAnterior.ToolTip = "Haga clic aqui para ver gráfico de evolución"; - //olblResultadoAnterior.ForeColor = Color.Green; - olblResultadoAnterior.Width = Unit.Pixel(20); + olblResultadoAnterior.ToolTip = "Haga clic aqui para ver gráfico de evolución"; + olblResultadoAnterior.Width = Unit.Pixel(30); olblResultadoAnterior.Text = resultadoAnterior; - objCellResultadoAnterior.Controls.Add(olblResultadoAnterior); - //Button oB = new Button(); - //oB.Text = "R.ANT"; - //oB.OnClientClick = "javascript: AntecedenteView (" + oDetalle.IdSubItem.IdItem.ToString() + "," + oDetalle.IdProtocolo.IdPaciente.IdPaciente.ToString() + "); return false"; - //objCellResultadoAnterior.Controls.Add(oB); - } + } - } - // if (VerificaValorReferencia(m_minimoReferencia, m_maximoReferencia, x, m_tipoValorReferencia)) + } if (oDetalle.VerificaValorReferencia(x)) olbl.ForeColor = Color.Black; else @@ -924,7 +880,7 @@ private void LlenarTabla(string p) - if (oDetalle.tieneAdjuntoVisible())//tiene observaciones + if (oDetalle.tieneAdjuntoVisible())//Caro: falta mejorar esto { imgAdj = true; btnImagen.TabIndex = short.Parse("500"); @@ -942,22 +898,15 @@ private void LlenarTabla(string p) - } + //} } objCellResultado.Controls.Add(olbl); if (imgAdj)objCellResultado.Controls.Add(btnImagen); ///etiqueta de unidad de medida - Label olblUM = new Label(); - - - // olblUM.ID = "UM" + m_idItem.ToString(); + Label olblUM = new Label(); olblUM.Font.Size = FontUnit.Point(7); - olblUM.Text = unMedida; - - - - + olblUM.Text = unMedida; objCellResultado.Controls.Add(olblUM); olblUM.Visible = false; @@ -986,11 +935,7 @@ private void LlenarTabla(string p) } - ///IMAGENES ADJUNTAS - - - - + ///IMAGENES ADJUNTAS // fin de imagenes adjuntas @@ -998,15 +943,22 @@ private void LlenarTabla(string p) if ((i_iddetalleProtocolo != 0) ) { - if (i_iddetalleProtocolo != 9999999) - { + //if (i_iddetalleProtocolo != 9999999) + //{ //DetalleProtocolo oDetalle = new DetalleProtocolo(); //oDetalle = (DetalleProtocolo)oDetalle.Get(typeof(DetalleProtocolo), i_iddetalleProtocolo); m_usuariovalida += " " + oDetalle.FechaValida.ToShortDateString(); if (oDetalle.IdProtocolo.IdTipoServicio.IdTipoServicio != 5) { - string resultadoAnterior = oDetalle.BuscarResultadoAnterior(oDetalle.IdSubItem, oDetalle.IdItem, false); + //string resultadoAnterior = oDetalle.BuscarResultadoAnterior(oDetalle.IdSubItem, oDetalle.IdItem, false); + string resultadoAnterior = ""; + + if (resultadosAnteriores.ContainsKey(oDetalle.IdSubItem.IdItem)) + { + resultadoAnterior = resultadosAnteriores[oDetalle.IdSubItem.IdItem]; + } + if (resultadoAnterior != "") { hayAntecedente = true; @@ -1017,32 +969,25 @@ private void LlenarTabla(string p) olblResultadoAnterior.Attributes.Add("onClick", "javascript: AntecedenteView (" + oDetalle.IdSubItem.IdItem.ToString() + "," + oDetalle.IdProtocolo.IdPaciente.IdPaciente.ToString() + ",790,450); return false"); olblResultadoAnterior.ToolTip = "Haga clic aqui para ver más datos."; //olblResultadoAnterior.ForeColor = Color.Green; - olblResultadoAnterior.Width = Unit.Pixel(20); + olblResultadoAnterior.Width = Unit.Pixel(30); olblResultadoAnterior.Text = resultadoAnterior; - objCellResultadoAnterior.Controls.Add(olblResultadoAnterior); - //Button oB = new Button(); - //oB.Text = "R.ANT"; - //oB.OnClientClick = "javascript: AntecedenteView (" + oDetalle.IdSubItem.IdItem.ToString() + "," + oDetalle.IdProtocolo.IdPaciente.IdPaciente.ToString() + "); return false"; - //objCellResultadoAnterior.Controls.Add(oB); + } } if (oDetalle.tieneAdjuntoVisible())//tiene observaciones - { - // ImageButton btnImagen = new ImageButton(); + { btnImagen.TabIndex = short.Parse("500"); btnImagen.ID = "IMG" + oDetalle.IdDetalleProtocolo.ToString(); btnImagen.ImageUrl = "~/App_Themes/default/images/obs_validado.png"; - btnImagen.ToolTip = "Adjunto imprimible para " + lbl1.Text.Replace(" ", ""); - btnImagen.Attributes.Add("onClick", "javascript: AdjuntoEdit (" + oDetalle.IdDetalleProtocolo.ToString() + "," + oDetalle.IdProtocolo.IdTipoServicio.IdTipoServicio.ToString() + ",'" + Request["Operacion"].ToString() + "'); return false"); objCellResultado.Controls.Add(btnImagen); } } - } + //} } // fin case 1 break; @@ -1050,39 +995,26 @@ private void LlenarTabla(string p) }//fin swicth - - - Label lblPersona = new Label(); - // lblPersona.TabIndex = short.Parse("500"); - lblPersona.Text = m_usuariovalida; /// Ds.Tables[0].Rows[i].ItemArray[1].ToString(); - - + Label lblPersona = new Label(); + lblPersona.Text = m_usuariovalida; /// lblPersona.Font.Size = FontUnit.Point(7); lblPersona.Font.Italic = true; lblPersona.Text = m_usuariovalida ; - - objCellPersona.Controls.Add(lblPersona); - - + objCellPersona.Controls.Add(lblPersona); } - Label lblValoresReferencia = new Label(); - - // lblValoresReferencia.ID = "VR" + m_idItem.ToString(); + Label lblValoresReferencia = new Label(); lblValoresReferencia.Font.Italic = true; lblValoresReferencia.Font.Size = FontUnit.Point(8); if (valorReferencia != "") {// muestra el valor guardado lblValoresReferencia.Text = valorReferencia; - if (m_metodo != "") - // lblValoresReferencia.Text += " |Método:" + m_metodo; + if (m_metodo != "") lblValoresReferencia.Text += Environment.NewLine + m_metodo; - } - //else - // lblValoresReferencia.Text = oDetalle.CalcularValoresReferencia(); + } objCellValoresReferencia.Controls.Add(lblValoresReferencia); } @@ -1091,30 +1023,21 @@ private void LlenarTabla(string p) ///Definir los anchos de las columnas objCellAnalisis.Width = Unit.Percentage(30); - objCellResultado.Width = Unit.Percentage(30); + objCellResultado.Width = Unit.Percentage(25); objCellValoresReferencia.Width = Unit.Percentage(20); // objCellValida.Width = Unit.Percentage(5); - objCellPersona.Width = Unit.Percentage(20); - + objCellPersona.Width = Unit.Percentage(15); + objCellResultadoAnterior.Width = Unit.Percentage(10); /////////////////////// ///agrega a la fila cada una de las celdas objFila.Cells.Add(objCellAnalisis); - objFila.Cells.Add(objCellResultado); - - //if (Request["Operacion"].ToString() != "HC") objFila.Cells.Add(objCellUnMedida); - - objFila.Cells.Add(objCellValoresReferencia); - - //if ((Request["Operacion"].ToString() == "Valida") || (Request["Operacion"].ToString() == "Control")) objFila.Cells.Add(objCellValida); - + objFila.Cells.Add(objCellResultado); + objFila.Cells.Add(objCellValoresReferencia); objFila.Cells.Add(objCellPersona); - objFila.Cells.Add(objCellResultadoAnterior); - //if (Request["Operacion"].ToString() != "HC") objFila.Cells.Add(objCellObservaciones); - - ////// + ////// Master.FindControl("ContentPlaceHolder1").FindControl("Panel1").Controls.Add(tContenido); //'añadimos la fila a la tabla @@ -1142,11 +1065,7 @@ private void LlenarTablaATB(string p) da.Fill(Ds); - - //int cantidadResultadosValidados = Ds.Tables[0].Rows.Count; - //if (cantidadResultadosValidados > 0) - - //{ + string s = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator; @@ -1196,43 +1115,13 @@ private void LlenarTablaATB(string p) for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { - //decimal m_minimoReferencia=-1; - //decimal m_maximoReferencia=-1; - // string valorReferencia = Ds.Tables[0].Rows[i].ItemArray[11].ToString(); - // int m_idItem = int.Parse(Ds.Tables[0].Rows[i].ItemArray[2].ToString()); - // int m_idMecanismo = int.Parse(Ds.Tables[0].Rows[i].ItemArray[3].ToString()); - // string unMedida = Ds.Tables[0].Rows[i].ItemArray[8].ToString(); - // string Observaciones = Ds.Tables[0].Rows[i].ItemArray[5].ToString(); + int tiporesultado = (int.Parse(Ds.Tables[0].Rows[i].ItemArray[4].ToString())); - // int tipodeterminacion = int.Parse(Ds.Tables[0].Rows[i].ItemArray[6].ToString()); - // int estado = int.Parse(Ds.Tables[0].Rows[i].ItemArray[9].ToString()); - // string m_metodo = Ds.Tables[0].Rows[i].ItemArray[10].ToString(); - - // string m_observacionReferencia = Ds.Tables[0].Rows[i].ItemArray[13].ToString(); - // string m_usuarioCarga = Ds.Tables[0].Rows[i].ItemArray[14].ToString(); - // string m_trajoMuestra = Ds.Tables[0].Rows[i].ItemArray[15].ToString(); - // string m_tipoValorReferencia = Ds.Tables[0].Rows[i].ItemArray[16].ToString(); - // string m_conResultado = Ds.Tables[0].Rows[i].ItemArray[17].ToString(); - // string m_formatoDecimal = Ds.Tables[0].Rows[i].ItemArray[18].ToString(); - //string m_formato0 = Ds.Tables[0].Rows[i].ItemArray[19].ToString(); - //string m_formato1 = Ds.Tables[0].Rows[i].ItemArray[20].ToString(); - //string m_formato2 = Ds.Tables[0].Rows[i].ItemArray[21].ToString(); - //string m_formato3 = Ds.Tables[0].Rows[i].ItemArray[22].ToString(); - //string m_formato4 = Ds.Tables[0].Rows[i].ItemArray[23].ToString(); - //string m_resultadoDefecto = Ds.Tables[0].Rows[i].ItemArray[24].ToString(); - // string m_usuariocontrol = Ds.Tables[0].Rows[i].ItemArray[25].ToString(); + string m_usuariovalida = Ds.Tables[0].Rows[i].ItemArray[5].ToString(); - // int i_iddetalleProtocolo = int.Parse(Ds.Tables[0].Rows[i].ItemArray[26].ToString()); - //string m_codificaPaciente = Ds.Tables[0].Rows[i].ItemArray[27].ToString(); - - // string m_estadoObservacion = Ds.Tables[0].Rows[i].ItemArray[29].ToString(); + string m_area = "ATB";//Ds.Tables[0].Rows[i].ItemArray[30].ToString(); - - //if (m_codificaPaciente == "True") - //{ - // lblPaciente.Visible = false; - // lblCodigoPaciente.Visible = true; - //} + m_hijo = Ds.Tables[0].Rows[i].ItemArray[2].ToString(); @@ -1257,24 +1146,19 @@ private void LlenarTablaATB(string p) { TableRow objRow = new TableRow(); TableCell objCell = new TableCell(); - Label lbl0 = new Label(); - //lbl0.ForeColor = Color + Label lbl0 = new Label(); lbl0.Text = m_area.ToUpper(); lbl0.TabIndex = short.Parse("500"); lbl0.Font.Bold = true; Master.FindControl("ContentPlaceHolder1").FindControl("Panel1").Controls.Add(lbl0); - objCell.Controls.Add(lbl0); - //if (Request["Operacion"].ToString() == "HC") - // objCell.ColumnSpan = 8; - //else + objCell.Controls.Add(lbl0); objCell.ColumnSpan = 8; objRow.BackColor = Color.Beige; objRow.HorizontalAlign = HorizontalAlign.Center; - objRow.Cells.Add(objCell); - // objRow.CssClass = "myLabelIzquierda"; + objRow.Cells.Add(objCell); tContenido.Controls.Add(objRow); pivot_Area = m_area; @@ -1317,45 +1201,26 @@ private void LlenarTablaATB(string p) lbl1.TabIndex = short.Parse("500"); lbl1.ForeColor = Color.Black; lbl1.Font.Size = FontUnit.Point(9); - //if (tipodeterminacion != 0) - //{ + lbl1.Font.Bold = true; lbl1.Font.Italic = true; objCellAnalisis.ColumnSpan = 1; - //} + objCellAnalisis.Controls.Add(lbl1); - - //if (tipodeterminacion == 0) // si es una determinacion simple - //{ Label olbl = new Label(); olbl.Font.Bold = true; olbl.Font.Size = FontUnit.Point(9); - //if (m_conResultado == "0") - // olbl.Text = ""; - //else olbl.Text = Ds.Tables[0].Rows[i].ItemArray[3].ToString(); - //if (Observaciones != "") - //{ - // if (olbl.Text == "") - // olbl.Text += Observaciones; - // else - // olbl.Text += Environment.NewLine + " " + Observaciones; - - //} - objCellResultado.Controls.Add(olbl); - - //DetalleProtocolo oDetalle = new DetalleProtocolo(); - //oDetalle = (DetalleProtocolo)oDetalle.Get(typeof(DetalleProtocolo), i_iddetalleProtocolo); - + m_usuariovalida += " "; //+ fefecha validad @@ -1364,8 +1229,7 @@ private void LlenarTablaATB(string p) - Label lblPersona = new Label(); - // lblPersona.TabIndex = short.Parse("500"); + Label lblPersona = new Label(); lblPersona.Text = m_usuariovalida; /// Ds.Tables[0].Rows[i].ItemArray[1].ToString(); @@ -1378,27 +1242,7 @@ private void LlenarTablaATB(string p) objCellPersona.Controls.Add(lblPersona); - - - ///no se usa valor referencia con los ATB - //Label lblValoresReferencia = new Label(); - - //// lblValoresReferencia.ID = "VR" + m_idItem.ToString(); - //lblValoresReferencia.Font.Italic = true; - //lblValoresReferencia.Font.Size = FontUnit.Point(8); - //if (valorReferencia != "") - //{// muestra el valor guardado - // lblValoresReferencia.Text = valorReferencia; - // if (m_metodo != "") - // // lblValoresReferencia.Text += " |Método:" + m_metodo; - // lblValoresReferencia.Text += Environment.NewLine + m_metodo; - //} - ////else - //// lblValoresReferencia.Text = oDetalle.CalcularValoresReferencia(); - - //objCellValoresReferencia.Controls.Add(lblValoresReferencia); - //} - + ///Definir los anchos de las columnas @@ -1447,10 +1291,6 @@ private void Imprimir(Protocolo oProtocolo, string tipo) Configuracion oCon = new Configuracion(); oCon = (Configuracion)oCon.Get(typeof(Configuracion),"IdEfector", oProtocolo.IdEfector); - // CrystalReportSource oCr = new CrystalReportSource(); - //oCr.Report.FileName = ""; - //oCr.CacheDuration =10000; - //oCr.EnableCaching = true; string parametroPaciente = ""; string parametroProtocolo = ""; @@ -1672,7 +1512,7 @@ protected void gvLista_RowDataBound(object sender, GridViewRowEventArgs e) string idProtocolo= this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString(); - string s_detalle = e.Row.Cells[0].Text + ": " + getDetalleProtocolo(idProtocolo); + string s_detalle = e.Row.Cells[0].Text;// + ": " + getDetalleProtocolo(idProtocolo); e.Row.Cells[0].ToolTip = s_detalle; e.Row.Cells[1].ToolTip = s_detalle; @@ -1699,22 +1539,7 @@ private bool AnalizarLimites(string p) throw new NotImplementedException(); } - private bool estaVisibleControl(string idarea) - { - bool visible=true; - //if (HidArea.Value == "0") - // visible = true; - //else - //{ - // if (idarea == HidArea.Value) - // visible = true; - // else - // visible = false; - //} - return visible; - - } - + @@ -1784,84 +1609,8 @@ protected void lnkAuditoria_Click(object sender, EventArgs e) - protected void lnkMarcar_Click(object sender, EventArgs e) - { - - Marcar(true); - - } - - private void Marcar(bool p) - { - - CheckBox chk; - - - if (Page.Master != null) - { - foreach (Control control in Page.Master.Controls) - { - if (control is HtmlForm) - { - foreach (Control controlform in control.Controls) - { - if (controlform is ContentPlaceHolder) - { - foreach (Control control1 in controlform.Controls) - { - if (control1 is Panel) - foreach (Control control2 in control1.Controls) - { - if (control2 is Table) - foreach (Control control3 in control2.Controls) - { - - if (control3 is TableRow) - foreach (Control control4 in control3.Controls) - { - - if (control4 is TableCell) - foreach (Control control5 in control4.Controls) - { - - if (control5 is CheckBox) - { - chk = (CheckBox)control5; - chk.Checked = p; - - - - } - - - } - } - } - } - } - } - } - } - } - } - - } - - protected void lnkDesmarcar_Click(object sender, EventArgs e) - { - Marcar(false); - } - - protected void btnVerAntecendente_Click(object sender, EventArgs e) - { - //if (ddlItem.SelectedValue != "0") - //{ - // Protocolo oProtocolo = new Protocolo(); - // oProtocolo = (Protocolo)oProtocolo.Get(typeof(Protocolo), CurrentPageIndex);//int.Parse(Request["idProtocolo"].ToString()));r(); - // CargarGrillaAntecedentes(oProtocolo); - // SetSelectedTab(TabIndex.THREE); - //} - } + + @@ -1887,35 +1636,35 @@ protected void btnPeticion_Click(object sender, EventArgs e) } - private string getDetalleProtocolo(string idProtocolo) - { - string dev = ""; int i = 0; - Protocolo oRegistro = new Protocolo(); - oRegistro = (Protocolo)oRegistro.Get(typeof(Protocolo), int.Parse(idProtocolo)); - - ISession m_session = NHibernateHttpModule.CurrentSession; - ICriteria crit = m_session.CreateCriteria(typeof(DetalleProtocolo)); - crit.Add(Expression.Eq("IdProtocolo", oRegistro)); - IList items = crit.List(); - foreach (DetalleProtocolo oDet in items) - { - i += 1; - if (dev == "") - dev = oDet.IdItem.Nombre; - else - { - if (dev.IndexOf(oDet.IdItem.Nombre) == -1) - dev = dev + " - " + oDet.IdItem.Nombre; - } - } - //return i.ToString() + ": " + dev; - return dev; - } + //private string getDetalleProtocolo(string idProtocolo) + //{ + // string dev = ""; int i = 0; + // Protocolo oRegistro = new Protocolo(); + // oRegistro = (Protocolo)oRegistro.Get(typeof(Protocolo), int.Parse(idProtocolo)); + + // ISession m_session = NHibernateHttpModule.CurrentSession; + // ICriteria crit = m_session.CreateCriteria(typeof(DetalleProtocolo)); + // crit.Add(Expression.Eq("IdProtocolo", oRegistro)); + // IList items = crit.List(); + // foreach (DetalleProtocolo oDet in items) + // { + // i += 1; + // if (dev == "") + // dev = oDet.IdItem.Nombre; + // else + // { + // if (dev.IndexOf(oDet.IdItem.Nombre) == -1) + // dev = dev + " - " + oDet.IdItem.Nombre; + // } + // } + // //return i.ToString() + ": " + dev; + // return dev; + //} - protected void btnArchivos_Click(object sender, EventArgs e) - { - Response.Redirect("../Protocolos/ProtocoloAdjuntar.aspx?idProtocolo=" + Session["idProtocolo"].ToString()+"&desde=resultado"); - } + //protected void btnArchivos_Click(object sender, EventArgs e) + //{ + // Response.Redirect("../Protocolos/ProtocoloAdjuntar.aspx?idProtocolo=" + Session["idProtocolo"].ToString()+"&desde=resultado"); + //} protected void imgPdf_Click(object sender, EventArgs e) { diff --git a/WebLab/Resultados/ResultadoView.aspx.designer.cs b/WebLab/Resultados/ResultadoView.aspx.designer.cs index 2bcb64d5..091f5509 100644 --- a/WebLab/Resultados/ResultadoView.aspx.designer.cs +++ b/WebLab/Resultados/ResultadoView.aspx.designer.cs @@ -283,49 +283,40 @@ public partial class ResultadoView { protected global::System.Web.UI.WebControls.Label lblDiagnostico; /// - /// lblNroSISA control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Label lblNroSISA; - - /// - /// lblPedidoOriginal control. + /// lblCovid control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Label lblPedidoOriginal; + protected global::System.Web.UI.WebControls.Label lblCovid; /// - /// HFCurrTabIndex control. + /// lblNroSISA control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.HiddenField HFCurrTabIndex; + protected global::System.Web.UI.WebControls.Label lblNroSISA; /// - /// pnlHC control. + /// lblPedidoOriginal control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Panel pnlHC; + protected global::System.Web.UI.WebControls.Label lblPedidoOriginal; /// - /// lblCovid control. + /// HFCurrTabIndex control. /// /// /// Auto-generated field. /// To modify move field declaration from designer file to code-behind file. /// - protected global::System.Web.UI.WebControls.Label lblCovid; + protected global::System.Web.UI.WebControls.HiddenField HFCurrTabIndex; /// /// lblMuestra control. @@ -435,15 +426,6 @@ public partial class ResultadoView { /// protected global::System.Web.UI.WebControls.DropDownList ddlItem; - /// - /// btnVerAntecendente control. - /// - /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. - /// - protected global::System.Web.UI.WebControls.Button btnVerAntecendente; - /// /// gvAntecedente control. /// diff --git a/WebLab/Turnos/TurnosEdit2.aspx.cs b/WebLab/Turnos/TurnosEdit2.aspx.cs index a3abde8d..0a785f81 100644 --- a/WebLab/Turnos/TurnosEdit2.aspx.cs +++ b/WebLab/Turnos/TurnosEdit2.aspx.cs @@ -500,9 +500,22 @@ private void CargarListas() //oUtil.CargarCombo(ddlDiagnostico, m_ssql, "id", "nombre"); //ddlDiagnostico.Items.Insert(0, new ListItem("", "0")); - string m_ssql = "SELECT idSectorServicio, prefijo + ' - ' + nombre as nombre FROM LAB_SectorServicio with (nolock) WHERE (baja = 0) order by nombre"; + //string m_ssql = "SELECT idSectorServicio, prefijo + ' - ' + nombre as nombre FROM LAB_SectorServicio with (nolock) WHERE (baja = 0) order by nombre"; + // oUtil.CargarCombo(ddlSectorServicio, m_ssql, "idSectorServicio", "nombre"); + // ddlSectorServicio.Items.Insert(0, new ListItem("-SIN IDENTIFICAR-", "0")); + + string str_condicion = ")"; + if ( (Request["Modifica"].ToString() == "1") && (Request["idTurno"] != null)) + str_condicion = " or exists (select 1 from LAB_Turno p WHERE p.idsector = s.idSectorServicio and idTurno = " + Request["idTurno"].ToString() + ")) "; + + + + string m_ssql = @"SELECT s.idSectorServicio, s.prefijo + ' - ' + s.nombre as nombre FROM LAB_SectorServicio S with (nolock) + WHERE (baja = 0) + and ( exists (select 1 from Lab_SectorServicioEfector SE where SE.idSectorServicio=S.idSectorServicio and se.idefector=" + oUser.IdEfector.IdEfector.ToString() + @" )" + str_condicion + @" order by nombre"; + oUtil.CargarCombo(ddlSectorServicio, m_ssql, "idSectorServicio", "nombre"); - ddlSectorServicio.Items.Insert(0, new ListItem("-SIN IDENTIFICAR-", "0")); + ddlSectorServicio.Items.Insert(0, new ListItem("Seleccione", "0")); //m_ssql = "SELECT idProfesional, apellido + ' ' + nombre AS nombre FROM Sys_Profesional ORDER BY apellido, nombre "; diff --git a/WebLab/Usuarios/PasswordEdit.aspx.cs b/WebLab/Usuarios/PasswordEdit.aspx.cs index ccddad53..e0597de9 100644 --- a/WebLab/Usuarios/PasswordEdit.aspx.cs +++ b/WebLab/Usuarios/PasswordEdit.aspx.cs @@ -18,15 +18,19 @@ public partial class PasswordEdit : System.Web.UI.Page protected void Page_PreInit(object sender, EventArgs e) { Usuario oUser = new Usuario(); + if (Session["idUsuario"]!= null) oUser = (Usuario)oUser.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); + else Response.Redirect("../FinSesion.aspx", false); + /* //Caro: Adaptacion multiefector - correccion que no estaba funcionando el cambio de clave de validacion. Configuracion oC = new Configuracion(); - oC = (Configuracion)oC.Get(typeof(Configuracion), "IdConfiguracion", 1); - if (oUser.IdEfector != oC.IdEfector) // es externo - { - this.MasterPageFile = "~/PeticionElectronica/SitePE.master"; + oC = (Configuracion)oC.Get(typeof(Configuracion), "IdConfiguracion", 1); + if (oUser.IdEfector != oC.IdEfector) // es externo + { + this.MasterPageFile = "~/PeticionElectronica/SitePE.master"; - } + } + */ } protected void Page_Load(object sender, EventArgs e) @@ -35,13 +39,13 @@ protected void Page_Load(object sender, EventArgs e) { Usuario oUser = new Usuario(); oUser = (Usuario)oUser.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - - Configuracion oC = new Configuracion(); + //Caro: Adaptacion multiefector - correccion que no estaba funcionando el cambio de clave de validacion. + /* Configuracion oC = new Configuracion(); oC = (Configuracion)oC.Get(typeof(Configuracion), "IdConfiguracion", 1); if (oUser.IdEfector != oC.IdEfector) // es externo VerificaPermisos("Validacion Externo"); - else + else*/ VerificaPermisos("Validacion"); if (Request["id"] != null) diff --git a/WebLab/login.ascx.cs b/WebLab/login.ascx.cs index e51634c3..8f08deaa 100644 --- a/WebLab/login.ascx.cs +++ b/WebLab/login.ascx.cs @@ -44,10 +44,10 @@ protected void Page_Load(object sender, EventArgs e) else { - if (ConfigurationManager.AppSettings["tipoAutenticacion"].ToString() == "SSO") + //if (ConfigurationManager.AppSettings["tipoAutenticacion"].ToString() == "SSO") - Salud.Security.SSO.SSOHelper.RedirectToSSOPage("Logout.aspx?relogin=1", "login.aspx"); + // Salud.Security.SSO.SSOHelper.RedirectToSSOPage("Logout.aspx?relogin=1", "login.aspx"); } } //} @@ -199,30 +199,28 @@ protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) } - - + + private bool VerificarSiTienePermisodeValidar(string user, string m_url) { - bool b_permiso = false; + string m_strSQL = @" SELECT P.permiso, M.objeto, M.url, U.username FROM Sys_Menu AS M INNER JOIN Sys_Permiso AS P ON M.idMenu = P.idMenu INNER JOIN Sys_Usuario AS U ON P.idPerfil = U.idPerfil - WHERE (M.url = '" + m_url + "') AND (U.username = '" + user + "') AND (P.permiso = 2) and (U.activo=1 ) "; + WHERE (M.url = @url) AND (U.username = @username) AND (P.permiso = 2) and (U.activo=1 ) "; - using (SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection) + SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura + using (SqlCommand cmd = new SqlCommand(m_strSQL, conn)) { - DataSet Ds = new DataSet(); + cmd.Parameters.AddWithValue("@url", m_url); + cmd.Parameters.AddWithValue("@username", user); - SqlDataAdapter adapter = new SqlDataAdapter(); - adapter.SelectCommand = new SqlCommand(m_strSQL, conn); - adapter.Fill(Ds); + conn.Open(); - DataTable dtPermisos = Ds.Tables[0]; + var result = cmd.ExecuteScalar(); - if (dtPermisos.Rows.Count > 0) b_permiso = true; - conn.Close(); - return b_permiso; + return result != null; } } } diff --git a/WebLab/loginSIL.ascx.cs b/WebLab/loginSIL.ascx.cs index 90f1de21..e7dd1d0f 100644 --- a/WebLab/loginSIL.ascx.cs +++ b/WebLab/loginSIL.ascx.cs @@ -35,53 +35,55 @@ protected void Page_Load(object sender, EventArgs e) Session["idUsuarioValida"] = null; Session["idUsuario"] = null; Session.Clear(); - if (ConfigurationManager.AppSettings["tipoAutenticacion"].ToString() == "SSO") + /* Caro: en miultiefector, no se autentica con SSO + if (ConfigurationManager.AppSettings["tipoAutenticacion"].ToString() == "SSO") Salud.Security.SSO.SSOHelper.RedirectToSSOPage("Logout.aspx?relogin=1", "login.aspx"); + */ } } } protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) - { - Utility oUtil = new Utility(); - string m_password = oUtil.Encrypt(Login1.Password); - - - int i_idusuario = 0; - string m_strSQL = @" SELECT top 1 idUsuario FROM Sys_usuario with (nolock) WHERE (username = '" + Login1.UserName + "') AND ([password] = '" + m_password + "') "; - - DataSet Ds = new DataSet(); - SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura - SqlDataAdapter adapter = new SqlDataAdapter(); - adapter.SelectCommand = new SqlCommand(m_strSQL, conn); - adapter.Fill(Ds); - DataTable dtPermisos = Ds.Tables[0]; - - if (dtPermisos.Rows.Count > 0) { - i_idusuario = int.Parse(dtPermisos.Rows[0][0].ToString()); - } - + { Usuario oUser = new Usuario(); - //oUser = (Usuario)oUser.Get(typeof(Usuario), "Username", Login1.UserName, "Password", m_password); - if (i_idusuario > 0) - { - - oUser = (Usuario)oUser.Get(typeof(Usuario), i_idusuario); - if (MostrarTerminosCondiciones(oUser)) + oUser = (Usuario)oUser.Get(typeof(Usuario), "Username", Login1.UserName); + if (oUser!= null) //(i_idusuario > 0) + { + if ((oUser.Activo) && (oUser.IdPerfil.Activo)) { - Session["usuarioPendienteAceptacion"] = i_idusuario; - ScriptManager.RegisterStartupScript(this, this.GetType(), "mostrarModal", "$('#modalTerminosCondiciones').modal('show');", true); + if (VerificarTipoAutenticacion(oUser)) + { + if (MostrarTerminosCondiciones(oUser)) + { + Session["usuarioPendienteAceptacion"] = oUser.IdUsuario;// i_idusuario; + ScriptManager.RegisterStartupScript(this, this.GetType(), "mostrarModal", "$('#modalTerminosCondiciones').modal('show');", true); + return; + } + } + else + { + oUser = null; + e.Authenticated = false; + Login1.FailureText = "Usuario y/o contraseña incorrecta."; + return; + } + } + else + { + oUser = null; + e.Authenticated = false; + Login1.FailureText = "El usuario inválido."; return; } - + } else { oUser = null; e.Authenticated = false; - Login1.FailureText = "El usuario y/o contraseña no son correctos."; + Login1.FailureText = "El usuario inválido."; return; } @@ -89,153 +91,38 @@ protected void Login1_Authenticate(object sender, AuthenticateEventArgs e) } - private void AutenticarUsuarioLdap(string username, string key) - - { - //// string path = @"LDAP://ldap.neuquen.gov.ar:389"; - ////string path = "LDAP://OU=People,O=integrabilidad,O=neuquen, DC=ldap.neuquen.gov.ar"; - //string path = @"LDAP://ldap.neuquen.gov.ar:389/OU=People,O=integrabilidad,O=neuquen"; - - - //DirectoryEntry ds = new DirectoryEntry(path, "26982063", "bc*123456", AuthenticationTypes.Secure); - //DirectorySearcher dssearch = new DirectorySearcher(ds); - //SearchResult result = dssearch.FindOne(); - - try - { - // Create the new LDAP connection - LdapDirectoryIdentifier ldi = new LdapDirectoryIdentifier("ldap.neuquen.gov.ar", 389); - System.DirectoryServices.Protocols.LdapConnection ldapConnection = - new System.DirectoryServices.Protocols.LdapConnection(ldi); - Console.WriteLine("LdapConnection is created successfully."); - ldapConnection.AuthType = AuthType.Basic; - ldapConnection.SessionOptions.ProtocolVersion = 3; - NetworkCredential nc = new NetworkCredential("uid=" + username + ",ou=people,O=integrabilidad,O=neuquen", - key); // "bc*1213456"); //password - ldapConnection.Bind(nc); - // ldapConnection.pr - - VerificarMatriculacion(username, key); - Console.WriteLine("LdapConnection authentication success"); - ldapConnection.Dispose(); - } - catch (LdapException e) - { - Console.WriteLine("\r\nUnable to login:\r\n\t" + e.Message); - VerificarMatriculacion(username, key); - } - catch (Exception e) - { - Console.WriteLine("\r\nUnexpected exception occured:\r\n\t" + e.GetType() + ":" + e.Message); - } - - } - - public void VerificarMatriculacion(string username, string contra) - { - //HttpContext CurrContext = HttpContext.Current; - //CurrContext.Items.Add("Documento", "20321008"); - //CurrContext.Items.Add("Clave", "20321008"); - //CurrContext.Items.Add("Apellido", "RESCHIA"); - //CurrContext.Items.Add("Nombre", "SANDRA CEFERINA"); - //CurrContext.Items.Add("Titulo", "MEDICA CIRUJANA"); - //Server.Transfer("DatosPersona.aspx"); - - - Session["Documento"] = "20321008"; - Session["Clave"] = "20321008"; - Session["Apellido"] = "RESCHIA"; - Session["Nombre"] = "SANDRA CEFERINA"; - Session["Titulo"] = "MEDICA CIRUJANA"; - - Response.Redirect("DatosPersona.aspx", false); - - - /* Configuracion oC = new Configuracion(); - - - oC = (Configuracion)oC.Get(typeof(Configuracion), 1);// "IdEfector", oEfector); - - string s_urlWFC = oC.UrlMatriculacion; - string s_url = s_urlWFC + "documento=" + username; // + "&codigoProfesion in (1,23)"; - - HttpWebRequest request = (HttpWebRequest)WebRequest.Create(s_url); - HttpWebResponse ws1 = (HttpWebResponse)request.GetResponse(); - JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); - Stream st = ws1.GetResponseStream(); - StreamReader sr = new StreamReader(st); - - string s = sr.ReadToEnd(); - if (s != "0") - { - - List pro = jsonSerializer.Deserialize>(s); - string espe; - if (pro.Count > 0) - { - - for (int i = 0; i < pro.Count; i++) - { - espe = pro[i].apellido + " " + pro[i].nombre + " - " + pro[i].profesiones[0].titulo; - HttpContext CurrContext = HttpContext.Current; - CurrContext.Items.Add("Documento", username); - CurrContext.Items.Add("Clave", contra); - CurrContext.Items.Add("Apellido", pro[i].apellido); - CurrContext.Items.Add("Nombre", pro[i].nombre); - CurrContext.Items.Add("Titulo", pro[i].profesiones[0].titulo); - Server.Transfer("DatosPersona.aspx"); - - - } - - - - - } - else - { //error no encontrado} - - - - } // procount - }//s!=0 - */ - } + + private bool VerificarSiTienePermisodeValidar(string user, string m_url) { - bool b_permiso = false; + string m_strSQL = @" SELECT P.permiso, M.objeto, M.url, U.username FROM Sys_Menu AS M INNER JOIN Sys_Permiso AS P ON M.idMenu = P.idMenu INNER JOIN Sys_Usuario AS U ON P.idPerfil = U.idPerfil - WHERE (M.url = '" + m_url + "') AND (U.username = '" + user + "') AND (P.permiso = 2) and (U.activo=1 ) "; - - using (SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection) + WHERE (M.url = @url) AND (U.username = @username) AND (P.permiso = 2) and (U.activo=1 ) "; + + SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura + using (SqlCommand cmd = new SqlCommand(m_strSQL, conn)) { - DataSet Ds = new DataSet(); + cmd.Parameters.AddWithValue("@url", m_url); + cmd.Parameters.AddWithValue("@username", user); - SqlDataAdapter adapter = new SqlDataAdapter(); - adapter.SelectCommand = new SqlCommand(m_strSQL, conn); - adapter.Fill(Ds); + conn.Open(); - DataTable dtPermisos = Ds.Tables[0]; + var result = cmd.ExecuteScalar(); - if (dtPermisos.Rows.Count > 0) b_permiso = true; - conn.Close(); - return b_permiso; + return result != null; } } private void IngresoSistema(Usuario oUser, AuthenticateEventArgs e) - { - - /* Habilitar cuando se quiera autogestion de usuarios medicos - if (oUser == null) - AutenticarUsuarioLdap(Login1.UserName, Login1.Password); - */ + { + if (oUser != null) { + if ((oUser.Activo) && (oUser.IdPerfil.Activo)) { if ((oUser.Activo) && (oUser.Externo)) @@ -341,6 +228,79 @@ private void IngresoSistema(Usuario oUser, AuthenticateEventArgs e) lblMensajeError.Text = Login1.FailureText; Login1.FailureText = ""; //Muestro solo lblMensajeError, ya que Login1.FailureText solo sirve para Login1_Authenticate y no para btn_aceptarTerminosCondiciones_Click } + + private bool VerificarTipoAutenticacion(Usuario oUser) + { /* + Caro: autenticacion diferencias con SIL /ONLOGIN + */ + // Utility oUtil = new Utility(); + bool autentica = false; + + if (oUser != null) + { //verifica el tipo de autenticacion + + string tipoAutenticacion = oUser.TipoAutenticacion.ToUpper().Trim(); + if (tipoAutenticacion == "SIL") + { + + Utility oUtil = new Utility(); + string m_password = oUtil.Encrypt(Login1.Password); + + string query = @" SELECT 1 FROM Sys_usuario + WHERE activo = 1 + AND username = @username + AND [password] = @password"; + + using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString)) + using (SqlCommand cmd = new SqlCommand(query, conn)) + { + cmd.Parameters.AddWithValue("@username", Login1.UserName); + cmd.Parameters.AddWithValue("@password", m_password); + + conn.Open(); + var result = cmd.ExecuteScalar(); + + autentica= result != null; + } + } + + else if (tipoAutenticacion == "ONELOGIN") + { + try + { + // Create the new LDAP connection + LdapDirectoryIdentifier ldi = new LdapDirectoryIdentifier("ldap.neuquen.gov.ar", 389); + System.DirectoryServices.Protocols.LdapConnection ldapConnection = + new System.DirectoryServices.Protocols.LdapConnection(ldi); + ldapConnection.AuthType = AuthType.Basic; + ldapConnection.SessionOptions.ProtocolVersion = 3; + NetworkCredential nc = new NetworkCredential("uid=" + Login1.UserName + ",ou=people,O=integrabilidad,O=neuquen", Login1.Password); + ldapConnection.Bind(nc); + ldapConnection.Dispose(); + autentica = true; + + } + catch (LdapException ex) + { + ////"Servicio LDAP no disponible" + autentica = false; + } + catch (Exception ex) + { + autentica = false; + } + } + else //ni sil no onlogin + { + + /// "Tipo de autenticación no soportado."; + autentica = false; + } + } + return autentica; + /*fin Caro: validacion por tipo de autenticacion*/ + } + protected void btn_aceptarTerminosCondiciones_Click(object sender, EventArgs e) { if(Session["usuarioPendienteAceptacion"] == null) From c99e26cd4a6d76b57b95123ce88eb24b5c92980a Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Mon, 4 May 2026 15:21:35 -0300 Subject: [PATCH 5/9] (LAB-244) Correcion hoja de trabajo (#85) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * correcion hoja de trabajo * (Lab 239) ABM y Lista Usuarios (#82) * Nueva funcionalidad. Agregar en la lista de usuarios por efector los usuarios de los CS (perfil Administrativo externo) vinculados a su efector * fix: que se actualice idEfector de Sys_Usuario al editar la lista de efectores vinculados * Nueva funcionalidad. Agregar en la lista de usuarios por efector los usuarios de los CS (perfil Administrativo externo) vinculados a su efector * fix: que se actualice idEfector de Sys_Usuario al editar la lista de efectores vinculados * fix: agregar en el listado pero no en el filtro las salitas que usan el laboratorio del efector * feature: se agrego ordenamiento * fix: agregar en el listado pero no en el filtro las salitas que usan el laboratorio del efector * feature: se agrego ordenamiento * fix: correcion de turnos para usuario externo * (Lab 230) Bugs de edicion de determinaciones desde Validacion (#78) * pasamos llenarTablas de Page PreInit a Page Init * en proceso. fix anterior no sirvio. probar si esta correcion es valida * fix: la correcion real se realiza colocando en cada control enableViewState=false * msj * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-232) bug de "Recordar Analisis" por tipo de servicio (#77) * fix: se corrige el bug de "recordar analisis" * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: cartel de error para combinacion onelogin y externo * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * fix: en load que valide si hay sesion * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * nuevo req, se agrega el tipo de autenticacion * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * fix: cartel de error para combinacion onelogin y externo * Delete Tests-Cypress/cypress/fixtures/local.env.json * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * correcion luego de las correciones de conflictos * auditorias * auditoria y guardar efector en modificacion * lbl error --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: correcion en "No funciona validacion de análisis" * (Lab 224) Corrección de bug sobre la edición de determinaciones con la marca “sin muestra” (#74) * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix: mismo fix en protocolo edit * fix: agrego que sea titulo para entrar a la regeneracion de items * fix: manera de listar los items en la grilla. verificar de no generar derivados. * cambio valores de resultado por variable ConResultado * ajuste actualizacion obra social del paciente --------- Co-authored-by: Caro * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro * (LAB-235) Validacion de análisis en la modificación de un protocolo (#79) * fix: validacion de analisis * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-232) bug de "Recordar Analisis" por tipo de servicio (#77) * fix: se corrige el bug de "recordar analisis" * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: cartel de error para combinacion onelogin y externo * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * fix: en load que valide si hay sesion * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * nuevo req, se agrega el tipo de autenticacion * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * fix: cartel de error para combinacion onelogin y externo * Delete Tests-Cypress/cypress/fixtures/local.env.json * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * correcion luego de las correciones de conflictos * auditorias * auditoria y guardar efector en modificacion * lbl error --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: correcion en "No funciona validacion de análisis" * (Lab 224) Corrección de bug sobre la edición de determinaciones con la marca “sin muestra” (#74) * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix: mismo fix en protocolo edit * fix: agrego que sea titulo para entrar a la regeneracion de items * fix: manera de listar los items en la grilla. verificar de no generar derivados. * cambio valores de resultado por variable ConResultado * ajuste actualizacion obra social del paciente --------- Co-authored-by: Caro * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro * pasamos llenarTablas de Page PreInit a Page Init * en proceso. fix anterior no sirvio. probar si esta correcion es valida * fix: la correcion real se realiza colocando en cada control enableViewState=false --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro * (LAB-207) Modificación en ABM de Agendas (#66) * abm: se controla en el alta y modificacion que la agenda no se superponga con otras * fix: que no traiga agendas dadas de baja * abm: se controla en el alta y modificacion que la agenda no se superponga con otras * fix: que no traiga agendas dadas de baja * 'AjusteAgendasDiasDomingo' * correcion para que evalue el efector solicitante --------- Co-authored-by: Caro * (LAB-193)Correcion del error de SQL en Estadisticas De Resultados Combinados (practicas) (#63) * fix: correcion del error de sql * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: cartel de error para combinacion onelogin y externo * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * fix: en load que valide si hay sesion * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * nuevo req, se agrega el tipo de autenticacion * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * fix: cartel de error para combinacion onelogin y externo * Delete Tests-Cypress/cypress/fixtures/local.env.json * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * correcion luego de las correciones de conflictos * auditorias * auditoria y guardar efector en modificacion * lbl error --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (Lab 224) Corrección de bug sobre la edición de determinaciones con la marca “sin muestra” (#74) * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix: mismo fix en protocolo edit * fix: agrego que sea titulo para entrar a la regeneracion de items * fix: manera de listar los items en la grilla. verificar de no generar derivados. * cambio valores de resultado por variable ConResultado * ajuste actualizacion obra social del paciente --------- Co-authored-by: Caro * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-232) bug de "Recordar Analisis" por tipo de servicio (#77) * fix: se corrige el bug de "recordar analisis" * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de … * correcion hoja de trabajo * Mantenimiento Abril20260422 (#86) * correcion hoja de trabajo * mejora para otros efectores * fix: bouquet Roldan * Mantenimiento Mayo 1 (#90) * correcion hoja de trabajo * mejora para otros efectores --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro --- .../HTrabajoProtocolo2Horizontal.cs | 217 ++++++++++++++++++ WebLab/WebLab.csproj | 14 +- 2 files changed, 223 insertions(+), 8 deletions(-) create mode 100644 WebLab/Informes/HojasdeTrabajo/HTrabajoProtocolo2Horizontal.cs diff --git a/WebLab/Informes/HojasdeTrabajo/HTrabajoProtocolo2Horizontal.cs b/WebLab/Informes/HojasdeTrabajo/HTrabajoProtocolo2Horizontal.cs new file mode 100644 index 00000000..da616cbc --- /dev/null +++ b/WebLab/Informes/HojasdeTrabajo/HTrabajoProtocolo2Horizontal.cs @@ -0,0 +1,217 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebLab.Informes.HojasdeTrabajo { + using System; + using System.ComponentModel; + using CrystalDecisions.Shared; + using CrystalDecisions.ReportSource; + using CrystalDecisions.CrystalReports.Engine; + + + public class HTrabajoProtocolo2Horizontal : ReportClass { + + public HTrabajoProtocolo2Horizontal() { + } + + public override string ResourceName { + get { + return "HTrabajoProtocolo2Horizontal.rpt"; + } + set { + // Do nothing + } + } + + public override bool NewGenerator { + get { + return true; + } + set { + // Do nothing + } + } + + public override string FullResourceName { + get { + return "WebLab.Informes.HojasdeTrabajo.HTrabajoProtocolo2Horizontal.rpt"; + } + set { + // Do nothing + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section Section1 { + get { + return this.ReportDefinition.Sections[0]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section Section2 { + get { + return this.ReportDefinition.Sections[1]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section GroupHeaderSection1 { + get { + return this.ReportDefinition.Sections[2]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section GroupHeaderSection2 { + get { + return this.ReportDefinition.Sections[3]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section Section3 { + get { + return this.ReportDefinition.Sections[4]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section GroupFooterSection2 { + get { + return this.ReportDefinition.Sections[5]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section GroupFooterSection1 { + get { + return this.ReportDefinition.Sections[6]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section Section4 { + get { + return this.ReportDefinition.Sections[7]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.CrystalReports.Engine.Section Section5 { + get { + return this.ReportDefinition.Sections[8]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.Shared.IParameterField Parameter_encabezado1 { + get { + return this.DataDefinition.ParameterFields[0]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.Shared.IParameterField Parameter_encabezado2 { + get { + return this.DataDefinition.ParameterFields[1]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.Shared.IParameterField Parameter_encabezado3 { + get { + return this.DataDefinition.ParameterFields[2]; + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public CrystalDecisions.Shared.IParameterField Parameter_imprimirFechaHora { + get { + return this.DataDefinition.ParameterFields[3]; + } + } + } + + [System.Drawing.ToolboxBitmapAttribute(typeof(CrystalDecisions.Shared.ExportOptions), "report.bmp")] + public class CachedHTrabajoProtocolo2Horizontal : Component, ICachedReport { + + public CachedHTrabajoProtocolo2Horizontal() { + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public virtual bool IsCacheable { + get { + return true; + } + set { + // + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public virtual bool ShareDBLogonInfo { + get { + return false; + } + set { + // + } + } + + [Browsable(false)] + [DesignerSerializationVisibilityAttribute(System.ComponentModel.DesignerSerializationVisibility.Hidden)] + public virtual System.TimeSpan CacheTimeOut { + get { + return CachedReportConstants.DEFAULT_TIMEOUT; + } + set { + // + } + } + + public virtual CrystalDecisions.CrystalReports.Engine.ReportDocument CreateReport() { + HTrabajoProtocolo2Horizontal rpt = new HTrabajoProtocolo2Horizontal(); + rpt.Site = this.Site; + return rpt; + } + + public virtual string GetCustomizedCacheKey(RequestContext request) { + String key = null; + // // The following is the code used to generate the default + // // cache key for caching report jobs in the ASP.NET Cache. + // // Feel free to modify this code to suit your needs. + // // Returning key == null causes the default cache key to + // // be generated. + // + // key = RequestContext.BuildCompleteCacheKey( + // request, + // null, // sReportFilename + // this.GetType(), + // this.ShareDBLogonInfo ); + return key; + } + } +} diff --git a/WebLab/WebLab.csproj b/WebLab/WebLab.csproj index f06aebe9..690222be 100644 --- a/WebLab/WebLab.csproj +++ b/WebLab/WebLab.csproj @@ -2124,7 +2124,6 @@ - @@ -4854,13 +4853,6 @@ ResultadoDefault.aspx - - ResultadosaSisa.aspx - ASPXCodeBehind - - - ResultadosaSisa.aspx - SinDatos.aspx ASPXCodeBehind @@ -4947,6 +4939,12 @@ HistorialPorUsuario.aspx + + True + True + HTrabajoProtocolo2Horizontal.rpt + Component + PacientesList.aspx ASPXCodeBehind From fb3e141bdbfcb40a3f2e0745877c3c4e2c19be2b Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Mon, 4 May 2026 15:24:12 -0300 Subject: [PATCH 6/9] (LAB-243) Visualizacion de disponibilidad de turnos por efector. (#84) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Visualizacion de disponibilidad de turnos por efector. Cambio de llamada de base de datos para mejorar performance. * mejora sql * Visualizacion de disponibilidad de turnos por efector. Cambio de llamada de base de datos para mejorar performance. * mejora sql * (Lab 239) ABM y Lista Usuarios (#82) * Nueva funcionalidad. Agregar en la lista de usuarios por efector los usuarios de los CS (perfil Administrativo externo) vinculados a su efector * fix: que se actualice idEfector de Sys_Usuario al editar la lista de efectores vinculados * Nueva funcionalidad. Agregar en la lista de usuarios por efector los usuarios de los CS (perfil Administrativo externo) vinculados a su efector * fix: que se actualice idEfector de Sys_Usuario al editar la lista de efectores vinculados * fix: agregar en el listado pero no en el filtro las salitas que usan el laboratorio del efector * feature: se agrego ordenamiento * fix: agregar en el listado pero no en el filtro las salitas que usan el laboratorio del efector * feature: se agrego ordenamiento * fix: correcion de turnos para usuario externo * (Lab 230) Bugs de edicion de determinaciones desde Validacion (#78) * pasamos llenarTablas de Page PreInit a Page Init * en proceso. fix anterior no sirvio. probar si esta correcion es valida * fix: la correcion real se realiza colocando en cada control enableViewState=false * msj * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-232) bug de "Recordar Analisis" por tipo de servicio (#77) * fix: se corrige el bug de "recordar analisis" * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: cartel de error para combinacion onelogin y externo * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * fix: en load que valide si hay sesion * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * nuevo req, se agrega el tipo de autenticacion * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * fix: cartel de error para combinacion onelogin y externo * Delete Tests-Cypress/cypress/fixtures/local.env.json * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * correcion luego de las correciones de conflictos * auditorias * auditoria y guardar efector en modificacion * lbl error --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: correcion en "No funciona validacion de análisis" * (Lab 224) Corrección de bug sobre la edición de determinaciones con la marca “sin muestra” (#74) * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix: mismo fix en protocolo edit * fix: agrego que sea titulo para entrar a la regeneracion de items * fix: manera de listar los items en la grilla. verificar de no generar derivados. * cambio valores de resultado por variable ConResultado * ajuste actualizacion obra social del paciente --------- Co-authored-by: Caro * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro * (LAB-235) Validacion de análisis en la modificación de un protocolo (#79) * fix: validacion de analisis * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-232) bug de "Recordar Analisis" por tipo de servicio (#77) * fix: se corrige el bug de "recordar analisis" * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: cartel de error para combinacion onelogin y externo * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * fix: en load que valide si hay sesion * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * nuevo req, se agrega el tipo de autenticacion * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * fix: cartel de error para combinacion onelogin y externo * Delete Tests-Cypress/cypress/fixtures/local.env.json * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * correcion luego de las correciones de conflictos * auditorias * auditoria y guardar efector en modificacion * lbl error --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: correcion en "No funciona validacion de análisis" * (Lab 224) Corrección de bug sobre la edición de determinaciones con la marca “sin muestra” (#74) * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix: mismo fix en protocolo edit * fix: agrego que sea titulo para entrar a la regeneracion de items * fix: manera de listar los items en la grilla. verificar de no generar derivados. * cambio valores de resultado por variable ConResultado * ajuste actualizacion obra social del paciente --------- Co-authored-by: Caro * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se corrige el bug de "recordar analisis" * fix: correcion en "No funciona validacion de análisis" --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro * pasamos llenarTablas de Page PreInit a Page Init * en proceso. fix anterior no sirvio. probar si esta correcion es valida * fix: la correcion real se realiza colocando en cada control enableViewState=false --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro * (LAB-207) Modificación en ABM de Agendas (#66) * abm: se controla en el alta y modificacion que la agenda no se superponga con otras * fix: que no traiga agendas dadas de baja * abm: se controla en el alta y modificacion que la agenda no se superponga con otras * fix: que no traiga agendas dadas de baja * 'AjusteAgendasDiasDomingo' * correcion para que evalue el efector solicitante --------- Co-authored-by: Caro * (LAB-193)Correcion del error de SQL en Estadisticas De Resultados Combinados (practicas) (#63) * fix: correcion del error de sql * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: cartel de error para combinacion onelogin y externo * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * (LAB-216)Error: Prompt de médicos en gestión de turnos desde Centro de Salud (#73) * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * fix: Correcion de bug para llenar el formulario de los resultados * fix: un tiempo de espera para que cargue correctamente el Check de s/Muestra --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * fix: se agrega configuracion para usurio externo * comments * fix: sacamos "No identificado" cuando da exception --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * fix: en load que valide si hay sesion * Mantenimiento Marzo 1 (#75) Auditoria Sin Insumo:Se corrige funcionalidad para que cuando se cambie de "sin insumo" a "disponible" se borren las marcas de validacion de "sin insumo" automaticas. Resultados por HT:Se corrige que no se mostraba valor por defecto en determinaciones de tipo de resultado predeterminado (simple y multiple). Mapeo SIL y SISA: Se agrega la opcion de descargar a excel el mapeo de interoperabilidad entre el SIL y SISA desde Configuracion-> Parametros SI (solapa Interoperabilidad SISA)Nueva Funcionalidad Placas:Se agrega funcionalidad con la opcion que sea multiefector.Nueva Funcionalidad Agendas y Turnos: Se corrige bug que no permite dar turnos en dias domingo. Turnos desde C.S:Se corrige seleccion de medico solicitante. * nuevo req, se agrega el tipo de autenticacion * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * fix: cartel de error para combinacion onelogin y externo * Delete Tests-Cypress/cypress/fixtures/local.env.json * fix: formato msj error y linea repetida * ejemplos de uso de libreria select2 * Revert "ejemplos de uso de libreria select2" This reverts commit 8d9ae9c457944d59d50bffa46098682d38f49b03. * cambios en proceso * feature: busqueda para lista de usuarios * visualizacion con grilla * fix: para todos los perfiles que no son "Administrativo Externo " que desaparezca la grilla EfectorLaboratorio y que quede el valor en "0" * lista de usuarios: check de solo admins * fix: libreria chosen compatible con controladores anthem * correcion luego de las correciones de conflictos * auditorias * auditoria y guardar efector en modificacion * lbl error --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (Lab 224) Corrección de bug sobre la edición de determinaciones con la marca “sin muestra” (#74) * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix; Corrección de bug sobre la edición de determinaciones con la marca “sin muestra”, regenera los detalles si no existian * fix: mismo fix en protocolo edit * fix: agrego que sea titulo para entrar a la regeneracion de items * fix: manera de listar los items en la grilla. verificar de no generar derivados. * cambio valores de resultado por variable ConResultado * ajuste actualizacion obra social del paciente --------- Co-authored-by: Caro * Mantenimiento20260406 (#81) * (LAB-236) Bug de tildado sin muestra automatico (#80) * fix: Bug de tildado sin muestra automatico * fix: correcion de los colores de validacion en Editar Practicas * Mantenimiento20260406 (#81) * fix: Bug de tildado sin muestra automatico --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> * (LAB-232) bug de "Recordar Analisis" por tipo de servicio (#77) * fix: se corrige el bug de "recordar analisis" * (LAB-205) Modificación en ABM de usuarios (#64) * nuevo req, se agrega el tipo de autenticacion * feat: se agrega un modal para que acepte terminos y condiciones. Se agrega en la bd la fecha y el log de Aceptacion de los terminos * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * fix: habilitar cambiar tipo de autenticacion y ampliar el ancho de listado de usuarios * ---hablar con caro por este cambio * fix: pendiente de revision proceso de alta de usuario * Delete Tests-Cypress/cypress/fixtures/local.env.json * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de paciente. y fix de carga de txtdatos * fix: Protocolos – Análisis repetidos * fix: rebaseo con main * fix: correcion script sql * Asociado a LAB-214: Sacar del PR la correcion de la tarea https://proyectos.andes.gob.ar/browse/LAB-192 (pasarla a otra rama ) para despues trabajarla, ya que baja mucho la performance del sistema. * fix: 1-protocolo: en la validacion faltaba mantener los datos cargados para los casos de error de FIS, FUC y fecha de muestra 2-turnos: que no se duplique el medico solicitante 3-resultados: sacar LAB192 * label para medico * Mantenimientoprotocolosy turnos (#72) * (LAB-215) BUG Cambio de paciente (#71) * fix: correcion de bug al cambiar paciente en Protocolo que generaba uno nuevo. Bug que pasa cuando se cambia de paciente a uno nuevo. * fix: para cambio de paciente, si da error de validacion que no borre las determinaciones * (LAB-118)fix: Correcion de bug para llenar el formulario de los resultados (#53) * fix: Correcion de bug para llenar el formulario de los resultados * (Lab-195) Requerimientos Derivaciones (#61) * feature: Grabar estado inicial de derivación. ResultadoCar: “Pendiente de Derivar” * fix: solo se actualizan los detalleProtocolos que se ingresaron al protocolo. * fix: de query que actualiza las derivaciones en el protocolo emisor * fix: Flexibilizar fecha y hora de retiro del lote * fix: correcion de fecha en recepcion de lote * fix: por ahora no restringimos la fecha de recibo * fix: faltaba la auditoria * para resolver conflicto * fix: para no pacientes cambio del metodo de derivacion que guarda el ResultadoCar * controles para el error de test * controles para el error de test * recibir lote. se saco try catch con nueva funcion de GET en BaseDataAccess * correciones para test * para pasar a test 12/1/2025 * correciones de Caro y Vane * Mantenimiento Enero 2026 (#69) * (LAB-107) Correccion de bug "Se borran los analisis del protocolo/turno al elegir un medico" (#26) * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: valida que si puso una matricula elija un medico y no la opcion "--selecciona--" * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * fix: se corrige el bug que borraba los analisis cargados en un protocolo cuando se abria el pop up de seleccionar medico * Al resolver conflicto falto llamar el metodo CargarDatosTxtDatosCargados * fix: correcciones de pruebas de Caro. Cuando se destildaba una determinacion tildaba, y cuando se carga el combo de profesionales, que de error si no se eligio ninguno * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: rebase con main * fix: traigo correctamente el JSON * fix: selecion de profesional en el drop down * fix: correcion luego de correcion de conflictos * fix: correcion luego de correcion de conflictos * correciones de los conflictos * fix de testing, comentados console log * nuevos hidden para controlar todos los post back del formulario * comentarios de las funciones * js * fix: estados en txtDatos * se toma en cuenta cuando hay redirect de cambio de … * Visualizacion de disponibilidad de turnos por efector. Cambio de llamada de base de datos para mejorar performance. * mejora sql * Mantenimiento Abril20260422 (#86) * Visualizacion de disponibilidad de turnos por efector. Cambio de llamada de base de datos para mejorar performance. * mejora sql --------- Co-authored-by: caroPintos <77695282+caroPintos@users.noreply.github.com> Co-authored-by: Caro --- WebLab/Turnos/TurnoList.aspx | 4 +- WebLab/Turnos/TurnoList.aspx.cs | 187 +++++++++------- WebLab/Turnos/TurnoList.aspx.designer.cs | 261 ++++++++++++----------- 3 files changed, 253 insertions(+), 199 deletions(-) diff --git a/WebLab/Turnos/TurnoList.aspx b/WebLab/Turnos/TurnoList.aspx index a830b6bd..2fe56064 100644 --- a/WebLab/Turnos/TurnoList.aspx +++ b/WebLab/Turnos/TurnoList.aspx @@ -149,7 +149,9 @@ + + diff --git a/WebLab/Turnos/TurnoList.aspx.cs b/WebLab/Turnos/TurnoList.aspx.cs index 0c40d791..21786305 100644 --- a/WebLab/Turnos/TurnoList.aspx.cs +++ b/WebLab/Turnos/TurnoList.aspx.cs @@ -1,7 +1,19 @@ -using System; +using Business; +using Business.Data; +using Business.Data.Laboratorio; +using CrystalDecisions.Shared; +using CrystalDecisions.Web; +using NHibernate; +using NHibernate.Collection; +using NHibernate.Expression; +using System; using System.Collections; using System.Configuration; using System.Data; +using System.Data.SqlClient; +using System.Data.SqlTypes; +using System.Drawing; +using System.IO; using System.Linq; using System.Web; using System.Web.Security; @@ -10,26 +22,15 @@ using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; -using Business; -using System.Data.SqlClient; -using NHibernate; -using Business.Data.Laboratorio; -using NHibernate.Expression; -using System.Data.SqlTypes; -using CrystalDecisions.Shared; -using System.IO; -using System.Drawing; -using NHibernate.Collection; -using CrystalDecisions.Web; -using Business.Data; +using static System.Net.WebRequestMethods; namespace WebLab.Turnos { public partial class TurnoList : System.Web.UI.Page { protected string DiasNoHabiles = ""; - protected DateTime fechaDesde= new DateTime(); - protected DateTime fechaHasta = new DateTime(); + //protected DateTime fechaDesde= new DateTime(); //Vane: No se esta usando mas + //protected DateTime fechaHasta = new DateTime(); public Configuracion oCon = new Configuracion(); public Usuario oUser = new Usuario(); @@ -237,10 +238,10 @@ private bool noEsFeriado() private bool VerificarAgenda() { - bool result = false; + bool result = false; lblMensajeSolicitante.Visible = false; if (ddlTipoServicio.SelectedValue != "") { - string s_item = ""; string m_ssqlItem = ""; + string s_item = ""; string m_ssqlItem = "", m_ssqlDia =""; if (ddlItem.SelectedValue != "0") s_item = " - " + ddlItem.SelectedItem.Text; m_ssqlItem = " AND A.IdItem=" + ddlItem.SelectedValue; @@ -248,69 +249,109 @@ private bool VerificarAgenda() lblFecha.Text = cldTurno.SelectedDate.ToLongDateString().ToUpper();//.ToShortDateString(); int dia = (int)cldTurno.SelectedDate.DayOfWeek; - + m_ssqlDia = " AND AD.Dia=" + dia.ToString(); DateTime fecha = DateTime.Parse(cldTurno.SelectedDate.ToShortDateString()); - ISession m_session = NHibernateHttpModule.CurrentSession; - string m_ssql = ""; - if (oUser.IdPerfil.IdPerfil == 15) - m_ssql = " FROM Agenda A WHERE A.Baja=0 AND A.IdTipoServicio=" + ddlTipoServicio.SelectedValue + - " and IdEfectorSolicitante = " + oUser.IdEfector.IdEfector.ToString()+ - " AND A.FechaDesde<='" + fecha.ToString("yyyyMMdd") + "'" + - " AND A.FechaHasta>='" + fecha.ToString("yyyyMMdd") + "'" + m_ssqlItem; - - else - m_ssql = " FROM Agenda A WHERE A.Baja=0 AND A.IdTipoServicio=" + ddlTipoServicio.SelectedValue + - " and IdEfector = " + oCon.IdEfector.IdEfector.ToString() + - " and IdEfectorSolicitante = " + oCon.IdEfector.IdEfector.ToString() + - " AND A.FechaDesde<='" + fecha.ToString("yyyyMMdd") + "'" + - " AND A.FechaHasta>='" + fecha.ToString("yyyyMMdd") + "'" + m_ssqlItem; + // ISession m_session = NHibernateHttpModule.CurrentSession; + string m_ssql = @"Select AD.HoraDesde, AD.HoraHasta, AD.TipoTurno, AD.Frecuencia, AD.LimiteTurnos, A.IdEfectorSolicitante, + ISNULL(Turnos.TurnosDados, 0) as TurnosDados + FROM LAB_Agenda A with (nolock) + inner join LAB_AgendaDia AD with (nolock) on AD.idAgenda = A.idAgenda + LEFT JOIN ( + SELECT + idEfector, + idEfectorSolicitante, + idTipoServicio, + IdItem, + COUNT(idTurno) as TurnosDados + FROM LAB_Turno WITH (NOLOCK) + WHERE baja = 0 AND fecha = '" + fecha.ToString("yyyyMMdd")+ @"' + GROUP BY idEfector, idEfectorSolicitante, idTipoServicio, IdItem + ) Turnos ON + Turnos.idEfector = A.IdEfector AND + Turnos.idEfectorSolicitante = A.IdEfectorSolicitante AND + Turnos.idTipoServicio = A.IdTipoServicio AND + Turnos.IdItem = A.IdItem + WHERE A.Baja=0 + AND A.IdTipoServicio=" + ddlTipoServicio.SelectedValue + + " AND A.FechaDesde<='" + fecha.ToString("yyyyMMdd") + "'" + + " AND A.FechaHasta>='" + fecha.ToString("yyyyMMdd") + "'" + m_ssqlItem + m_ssqlDia; - IQuery q = m_session.CreateQuery(m_ssql); + if (oUser.IdPerfil.IdPerfil == 15) + m_ssql += " and IdEfectorSolicitante = " + oUser.IdEfector.IdEfector.ToString(); + else //Traigo el labo y sus relacionados + m_ssql += " and A.IdEfector = " + oCon.IdEfector.IdEfector.ToString(); + + + DataSet Ds = new DataSet(); + SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection; + SqlDataAdapter adapter = new SqlDataAdapter(); + adapter.SelectCommand = new SqlCommand(m_ssql, conn); + adapter.Fill(Ds); + if (Ds.Tables[0].Rows.Count > 0) + { + result = true; + //Me traigo la fila con la que completo los horarios + DataRow[] array = Ds.Tables[0].Select("idEfectorSolicitante = " + oUser.IdEfector.IdEfector); + if (array != null && array.Length > 0) + { + DataRow fila = array[0]; + string horaDesde = fila[0].ToString(); + string horaHasta = fila[1].ToString(); + int tipoTurno = int.Parse(fila[2].ToString()); + int frecuencia = int.Parse(fila[3].ToString()); + lblHorario.Text = "Horario de Atención: " + horaDesde + " - " + horaHasta; + lblHoraTurno.Text = CalcularHorarioDisponible(tipoTurno, frecuencia, horaDesde); + } + else //no hay agenda del efector logueado + { + result = false; + } + //Me traigo la fila con la que completo los turnos disponibles, dependiendo del efector solicitante elegido + string idEfectorSolicitante = "0"; + if (ddlEfectorSolicitante.SelectedValue != "0") idEfectorSolicitante = ddlEfectorSolicitante.SelectedValue; + else idEfectorSolicitante = oUser.IdEfector.IdEfector.ToString(); - IList lista = q.List(); - if (lista.Count > 0) - { - foreach (Agenda oAgenda in lista) + DataRow[] arraySol = Ds.Tables[0].Select("idEfectorSolicitante = " + idEfectorSolicitante); + if(arraySol != null && arraySol.Length >0 ) //Tiene agenda el efector solicitante seleccionado { - fechaDesde = oAgenda.FechaDesde; - fechaHasta = oAgenda.FechaHasta; - ICriteria crit = m_session.CreateCriteria(typeof(AgendaDia)); - crit.Add(Expression.Eq("IdAgenda", oAgenda)); - crit.Add(Expression.Eq("Dia", dia)); - - IList listaDias = crit.List(); - if (listaDias.Count > 0) + DataRow filaSol = arraySol[0]; + int limiteTurnos = int.Parse(filaSol[4].ToString()); + if (limiteTurnos == 0) { - foreach (AgendaDia oAgendaDia in listaDias) - { - result = true; - lblHorario.Text = "Horario de Atención: " + oAgendaDia.HoraDesde + " - " + oAgendaDia.HoraHasta; - lblHoraTurno.Text = CalcularHorarioDisponible(oAgendaDia.TipoTurno, oAgendaDia.Frecuencia, oAgendaDia.HoraDesde); - if (oAgendaDia.LimiteTurnos == 0) - { - lblLimiteTurnos.Text = "Sin límite de turnos"; - lblTurnosDisponibles.Text = "0"; - } - else - { - lblLimiteTurnos.Text = oAgendaDia.LimiteTurnos.ToString(); - int turnos_dados = int.Parse(lblTurnosDados.Text); - lblTurnosDisponibles.Text = (oAgendaDia.LimiteTurnos - turnos_dados).ToString(); - } - - } - break; + lblLimiteTurnos.Text = "Sin límite de turnos"; + lblTurnosDisponibles.Text = "0"; } else - result = false; + { + lblLimiteTurnos.Text = limiteTurnos.ToString(); + int turnos_dados = int.Parse(filaSol[6].ToString()); + lblTurnosDisponibles.Text = (limiteTurnos - turnos_dados).ToString(); + lblTurnosDados.Text = turnos_dados.ToString(); + } + + + } + else + { + if(idEfectorSolicitante.ToString() != oUser.IdEfector.IdEfector.ToString()) + { + lblLimiteTurnos.Text = "0"; + lblTurnosDisponibles.Text = "0"; + lblTurnosDados.Text = "0"; + lblMensajeSolicitante.Text = "No existe agenda para el Efector Solicitante"; + lblMensajeSolicitante.Visible = true; + } + } + } else result = false; + } - else result = false; + return result; } @@ -319,25 +360,25 @@ private string CalcularHorarioDisponible(int tipo, int f, string horadesde) { DateTime fecha = DateTime.Parse(cldTurno.SelectedDate.ToShortDateString()); string m_strSQL = ""; - if (oUser.IdPerfil.IdPerfil==15) + if (oUser.IdPerfil.IdPerfil == 15) m_strSQL = " SELECT idTurno AS idturno, hora FROM LAB_Turno AS T (nolock) " + " WHERE (T.baja = 0) AND T.fecha='" + fecha.ToString("yyyyMMdd") + "'" + " and T.idEfectorSolicitante= " + oUser.IdEfector.IdEfector.ToString() + " AND T.idTipoServicio=" + ddlTipoServicio.SelectedValue + " AND T.IdItem=" + ddlItem.SelectedValue + " ORDER BY idturno DESC "; else - m_strSQL = @" SELECT idTurno AS idturno, hora + m_strSQL = @" SELECT idTurno AS idturno, hora FROM LAB_Turno AS T (nolock) WHERE (T.baja = 0) AND T.fecha='" + fecha.ToString("yyyyMMdd") + @"' and T.idEfector= " + oCon.IdEfector.IdEfector.ToString() + - @" and T.idEfectorSolicitante= " + oCon.IdEfector.IdEfector.ToString() + - @" AND T.idTipoServicio=" + ddlTipoServicio.SelectedValue + " AND T.IdItem=" + ddlItem.SelectedValue + " ORDER BY idturno DESC "; + @" and T.idEfectorSolicitante= " + oCon.IdEfector.IdEfector.ToString() + + @" AND T.idTipoServicio=" + ddlTipoServicio.SelectedValue + " AND T.IdItem=" + ddlItem.SelectedValue + " ORDER BY idturno DESC "; DataSet Ds = new DataSet(); SqlConnection conn = (SqlConnection)NHibernateHttpModule.CurrentSession.Connection; SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(m_strSQL, conn); adapter.Fill(Ds); - string m_Hora=horadesde; + string m_Hora = horadesde; lblTurnosDados.Text = Ds.Tables[0].Rows.Count.ToString(); if (tipo == 1) @@ -350,7 +391,7 @@ FROM LAB_Turno AS T (nolock) } } - return m_Hora; + return m_Hora; @@ -500,7 +541,7 @@ protected void btnNuevo_Click(object sender, EventArgs e) Session["Turno_Fecha"] = cldTurno.SelectedDate; Session["Turno_IdTipoServicio"] = ddlTipoServicio.SelectedValue; Session["idServicio"] = ddlTipoServicio.SelectedValue; - Session["Turno_Hora"] = lblHoraTurno.Text; + Session["Turno_Hora"] = lblHoraTurno.Text; Session["idItem"] = ddlItem.SelectedValue; Response.Redirect("Default.aspx", false); } diff --git a/WebLab/Turnos/TurnoList.aspx.designer.cs b/WebLab/Turnos/TurnoList.aspx.designer.cs index f4b76aae..f2ee3d25 100644 --- a/WebLab/Turnos/TurnoList.aspx.designer.cs +++ b/WebLab/Turnos/TurnoList.aspx.designer.cs @@ -1,275 +1,286 @@ //------------------------------------------------------------------------------ -// -// This code was generated by a tool. +// +// Este código fue generado por una herramienta. // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// //------------------------------------------------------------------------------ -namespace WebLab.Turnos { - - - public partial class TurnoList { - +namespace WebLab.Turnos +{ + + + public partial class TurnoList + { + /// - /// lblTitulo control. + /// Control lblTitulo. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblTitulo; - + /// - /// lblSubTitulo control. + /// Control lblSubTitulo. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblSubTitulo; - + /// - /// pnlDerecho control. + /// Control pnlDerecho. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.HtmlControls.HtmlGenericControl pnlDerecho; - + /// - /// ddlTipoServicio control. + /// Control ddlTipoServicio. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlTipoServicio; - + /// - /// imgServicioView control. + /// Control imgServicioView. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.ImageButton imgServicioView; - + /// - /// ddlItem control. + /// Control ddlItem. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlItem; - + /// - /// imgCalendarioView control. + /// Control imgCalendarioView. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.ImageButton imgCalendarioView; - + /// - /// btnActualizar control. + /// Control btnActualizar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnActualizar; - + /// - /// cldTurno control. + /// Control cldTurno. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Calendar cldTurno; - + /// - /// btnNuevo control. + /// Control btnNuevo. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnNuevo; - + /// - /// lnkProtocolo control. + /// Control lnkProtocolo. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton lnkProtocolo; - + /// - /// lblMensaje control. + /// Control lblMensaje. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblMensaje; - + + /// + /// Control lblMensajeSolicitante. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.Label lblMensajeSolicitante; + /// - /// lblHoraTurno control. + /// Control lblHoraTurno. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblHoraTurno; - + /// - /// lblTipoServicio control. + /// Control lblTipoServicio. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblTipoServicio; - + /// - /// lblFecha control. + /// Control lblFecha. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblFecha; - + /// - /// lblHorario control. + /// Control lblHorario. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblHorario; - + /// - /// lblLimiteTurnos control. + /// Control lblLimiteTurnos. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblLimiteTurnos; - + /// - /// lblTurnosDados control. + /// Control lblTurnosDados. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblTurnosDados; - + /// - /// lblTurnosDisponibles control. + /// Control lblTurnosDisponibles. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblTurnosDisponibles; - + /// - /// ddlEfectorSolicitante control. + /// Control ddlEfectorSolicitante. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlEfectorSolicitante; - + /// - /// ddlEstadoTurno control. + /// Control ddlEstadoTurno. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlEstadoTurno; - + /// - /// txtPaciente control. + /// Control txtPaciente. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.TextBox txtPaciente; - + /// - /// rdbBusqueda control. + /// Control rdbBusqueda. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.RadioButtonList rdbBusqueda; - + /// - /// btnBuscar control. + /// Control btnBuscar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton btnBuscar; - + /// - /// cvNumeroDesde control. + /// Control cvNumeroDesde. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.CustomValidator cvNumeroDesde; - + /// - /// lblUltimoProtocolo control. + /// Control lblUltimoProtocolo. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Label lblUltimoProtocolo; - + /// - /// gvLista control. + /// Control gvLista. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.GridView gvLista; - + /// - /// lnkPlanilla control. + /// Control lnkPlanilla. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton lnkPlanilla; - + /// - /// lnkPlanillaDetallada control. + /// Control lnkPlanillaDetallada. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.LinkButton lnkPlanillaDetallada; } From b223c230dda47054e805db07a2ebbf2a2d7b473d Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Thu, 30 Apr 2026 12:14:32 -0300 Subject: [PATCH 7/9] mejoras de agenda --- WebLab/Agendas/AgendaEdit.aspx.cs | 40 +++++++++++--- WebLab/Agendas/AgendaList.aspx | 14 +++++ WebLab/Agendas/AgendaList.aspx.cs | 63 ++++++++++++++++++---- WebLab/Agendas/AgendaList.aspx.designer.cs | 53 ++++++++++-------- 4 files changed, 133 insertions(+), 37 deletions(-) diff --git a/WebLab/Agendas/AgendaEdit.aspx.cs b/WebLab/Agendas/AgendaEdit.aspx.cs index a6d152d1..dfae347f 100644 --- a/WebLab/Agendas/AgendaEdit.aspx.cs +++ b/WebLab/Agendas/AgendaEdit.aspx.cs @@ -1,7 +1,14 @@ -using System; +using Business; +using Business.Data; +using Business.Data.Laboratorio; +using NHibernate; +using NHibernate.Expression; +using System; using System.Collections; +using System.Collections.Generic; using System.Configuration; using System.Data; +using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.Security; @@ -10,12 +17,6 @@ using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; -using Business; -using Business.Data.Laboratorio; -using Business.Data; -using NHibernate; -using NHibernate.Expression; -using System.Data.SqlClient; namespace WebLab.Agendas { @@ -72,8 +73,16 @@ private void MostrarDatos() { ddlEfector.SelectedValue = oRegistro.IdEfectorSolicitante.IdEfector.ToString(); cboTipoServicio.SelectedValue = oRegistro.IdTipoServicio.IdTipoServicio.ToString(); + txtFechaDesde.Value = oRegistro.FechaDesde.ToShortDateString(); txtFechaHasta.Value = oRegistro.FechaHasta.ToShortDateString(); + + //Por defecto los items se los carga con cboTipoServicio.SelectedValue = 1 + //Por eso cuando el item no es LABORATORIO no trae la Practica porque no es de tipo 1 + if (cboTipoServicio.SelectedValue != "1") + { + CargarItems(); //Lo recargo con el cboTipoServicio de la agenda + } ddlItem.SelectedValue = oRegistro.IdItem.ToString(); AgendaDia oItem = new AgendaDia(); @@ -306,6 +315,23 @@ protected void customValidadorGeneral_ServerValidate(object source, ServerValida if (Request["id"] != null) //Sacar el id de la agenda si es modificacion crit.Add(Expression.Not(Expression.Eq("IdAgenda", int.Parse(Request["id"])))); + // validar días seleccionados + List diasSeleccionados = new List(); + for (int i=0; i 0) diff --git a/WebLab/Agendas/AgendaList.aspx b/WebLab/Agendas/AgendaList.aspx index ad8fdad1..dbfc0a96 100644 --- a/WebLab/Agendas/AgendaList.aspx +++ b/WebLab/Agendas/AgendaList.aspx @@ -25,6 +25,14 @@ + + + + + @@ -32,12 +32,12 @@ diff --git a/WebLab/Agendas/AgendaList.aspx.cs b/WebLab/Agendas/AgendaList.aspx.cs index a4027014..7ace67de 100644 --- a/WebLab/Agendas/AgendaList.aspx.cs +++ b/WebLab/Agendas/AgendaList.aspx.cs @@ -153,7 +153,8 @@ inner join LAB_Agenda D (nolock) ON D.idEfectorSolicitante=R.idefectorRel and D ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; oUtil.CargarCombo(ddlEfectorSolicitante, m_ssql, "idEfector", "nombre"); - ddlEfectorSolicitante.Items.Insert(0, new ListItem("Todos", "0")); + if(ddlEfectorSolicitante.Items.Count > 1) + ddlEfectorSolicitante.Items.Insert(0, new ListItem("Todos", "0")); m_ssql = null; oUtil = null; From 6d750a956c2f58e6f66e0c00da3e5a04400fdb4a Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Mon, 4 May 2026 09:20:56 -0300 Subject: [PATCH 9/9] fix: configuracion para subse en agendas --- WebLab/Agendas/AgendaList.aspx.cs | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/WebLab/Agendas/AgendaList.aspx.cs b/WebLab/Agendas/AgendaList.aspx.cs index 7ace67de..c828c19a 100644 --- a/WebLab/Agendas/AgendaList.aspx.cs +++ b/WebLab/Agendas/AgendaList.aspx.cs @@ -41,7 +41,10 @@ protected void Page_Load(object sender, EventArgs e) CargarListas(); CargarGrilla(); - + if (oUser.IdEfector.IdEfector == 227) + btnAgregar.Visible = false; + + } } private int Permiso /*el permiso */ @@ -79,8 +82,11 @@ private object LeerDatos() { //Usuario oUser = new Usuario(); //oUser = (Usuario)oUser.Get(typeof(Usuario), int.Parse(Session["idUsuario"].ToString())); - - string m_condicion = " and A.idEfector = " + oUser.IdEfector.IdEfector.ToString(); + + string m_condicion=""; + + if (oUser.IdEfector.IdEfector != 227) + m_condicion = " and A.idEfector = " + oUser.IdEfector.IdEfector.ToString(); if (ddlTipoServicio.SelectedValue != "0") m_condicion += " and A.idTipoServicio=" + ddlTipoServicio.SelectedValue; if (ddlEfectorSolicitante.SelectedValue != "0") m_condicion += " and A.idEfectorSolicitante=" + ddlEfectorSolicitante.SelectedValue; @@ -146,11 +152,19 @@ private void CargarListas() ddlTipoServicio.Items.Insert(0, new ListItem("Todos", "0")); ////////////Carga de combos de Efector - m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) + if (oUser.IdEfector.IdEfector == 227) + { + m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) + where idEfector in (select distinct D.idEfectorSolicitante from LAB_Agenda D (nolock) + where D.baja =0) + order by nombre "; + } + else + m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) where idEfector in (select distinct R.idefectorRel from LAB_EfectorRelacionado R (nolock) inner join LAB_Agenda D (nolock) ON D.idEfectorSolicitante=R.idefectorRel and D.idEfector=R.idEfector where D.baja =0 and R.idefector = " + oUser.IdEfector.IdEfector.ToString() + - ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; + ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; oUtil.CargarCombo(ddlEfectorSolicitante, m_ssql, "idEfector", "nombre"); if(ddlEfectorSolicitante.Items.Count > 1)
Efector Solicitante: + @@ -60,6 +68,12 @@ + + + + + + diff --git a/WebLab/Agendas/AgendaList.aspx.cs b/WebLab/Agendas/AgendaList.aspx.cs index 6f71fc18..a4027014 100644 --- a/WebLab/Agendas/AgendaList.aspx.cs +++ b/WebLab/Agendas/AgendaList.aspx.cs @@ -82,15 +82,45 @@ private object LeerDatos() string m_condicion = " and A.idEfector = " + oUser.IdEfector.IdEfector.ToString(); if (ddlTipoServicio.SelectedValue != "0") m_condicion += " and A.idTipoServicio=" + ddlTipoServicio.SelectedValue; + if (ddlEfectorSolicitante.SelectedValue != "0") m_condicion += " and A.idEfectorSolicitante=" + ddlEfectorSolicitante.SelectedValue; - string m_strSQL = @" select top 20 A.idAgenda, T.nombre, I.nombre as item, convert(varchar(10),A.fechaDesde,103) as fechaDesde, - convert(varchar(10),A.fechaHasta,103) as fechaHasta ,E.nombre as efector, U.apellido as usuario, A.fechaRegistro + string m_strSQL = @" select top 20 A.idAgenda, T.nombre, (I.codigo +'-' +I.nombre) as item, convert(varchar(10),A.fechaDesde,103) as fechaDesde, + convert(varchar(10),A.fechaHasta,103) as fechaHasta ,E.nombre as efector, U.apellido as usuario, + A.fechaRegistro,D.dias, D.limiteTurnos from Lab_TipoServicio T (nolock) - INNER JOIN lAB_aGENDA A (nolock) on A.idTipoServicio= T.idTipoServicio - LEFT JOIN lab_item I (nolock) on A.iditem=i.iditem - inner join sys_Efector E (nolock) on E.idEfector=A.idEfectorSolicitante - inner join sys_usuario U (nolock) on U.idUsuario= A.idUsuarioRegistro - where A.baja=0 " + m_condicion +" order by A.idAgenda desc "; + INNER JOIN lAB_aGENDA A (nolock) on A.idTipoServicio= T.idTipoServicio + LEFT JOIN lab_item I (nolock) on A.iditem=i.iditem + inner join sys_Efector E (nolock) on E.idEfector=A.idEfectorSolicitante + inner join sys_usuario U (nolock) on U.idUsuario= A.idUsuarioRegistro + INNER JOIN ( + SELECT + D1.idAgenda, + + STUFF(( + SELECT ', ' + + case + when D2.dia = 1 then 'Lunes' + when D2.dia = 2 then 'Martes' + when D2.dia = 3 then 'Miercoles' + when D2.dia = 4 then 'Jueves' + when D2.dia = 5 then 'Viernes' + when D2.dia = 6 then 'Sabado' + when D2.dia = 7 then 'Domingo' + + end + FROM LAB_AgendaDia D2 (NOLOCK) + WHERE D2.idAgenda = D1.idAgenda + ORDER BY D2.dia + FOR XML PATH('') + ), 1, 1, '') AS dias, + + MAX(D1.limiteTurnos) AS limiteTurnos + + FROM LAB_AgendaDia D1 (NOLOCK) + GROUP BY D1.idAgenda + ) D + ON D.idAgenda = A.idAgenda + where A.baja=0 " + m_condicion +" order by A.idAgenda desc "; DataSet Ds = new DataSet(); SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString); ///Performance: conexion de solo lectura @@ -109,10 +139,21 @@ inner join sys_usuario U (nolock) on U.idUsuario= A.idUsuarioRegistro private void CargarListas() { Utility oUtil = new Utility(); ///Carga de combos de Areas + string connReady = ConfigurationManager.ConnectionStrings["SIL_ReadOnly"].ConnectionString; ///Performance: conexion de solo lectura + string m_ssql = "select idTipoServicio, nombre from Lab_TipoServicio WHERE idtipoServicio<4 and (baja = 0)"; oUtil.CargarCombo(ddlTipoServicio, m_ssql, "idTipoServicio", "nombre"); ddlTipoServicio.Items.Insert(0, new ListItem("Todos", "0")); + ////////////Carga de combos de Efector + m_ssql = @"SELECT idEfector, nombre FROM sys_Efector E (nolock) + where idEfector in (select distinct R.idefectorRel from LAB_EfectorRelacionado R (nolock) + inner join LAB_Agenda D (nolock) ON D.idEfectorSolicitante=R.idefectorRel and D.idEfector=R.idEfector + where D.baja =0 and R.idefector = " + oUser.IdEfector.IdEfector.ToString() + + ") or (E.idEfector= " + oUser.IdEfector.IdEfector.ToString() + @") order by nombre "; + + oUtil.CargarCombo(ddlEfectorSolicitante, m_ssql, "idEfector", "nombre"); + ddlEfectorSolicitante.Items.Insert(0, new ListItem("Todos", "0")); m_ssql = null; oUtil = null; @@ -133,12 +174,12 @@ protected void gvLista_RowDataBound(object sender, GridViewRowEventArgs e) if (e.Row.RowType == DataControlRowType.DataRow) { - ImageButton CmdModificar = (ImageButton)e.Row.Cells[7].Controls[1]; + ImageButton CmdModificar = (ImageButton)e.Row.Cells[9].Controls[1]; CmdModificar.CommandArgument = this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString(); CmdModificar.CommandName = "Modificar"; CmdModificar.ToolTip="Modifica"; - ImageButton CmdEliminar = (ImageButton)e.Row.Cells[8].Controls[1]; + ImageButton CmdEliminar = (ImageButton)e.Row.Cells[10].Controls[1]; CmdEliminar.CommandArgument = this.gvLista.DataKeys[e.Row.RowIndex].Value.ToString(); if (Permiso == 1) { @@ -192,5 +233,9 @@ protected void ddlTipoServicio_SelectedIndexChanged(object sender, EventArgs e) CargarGrilla(); } + protected void ddlEfectorSolicitante_SelectedIndexChanged(object sender, EventArgs e) + { + CargarGrilla(); + } } } diff --git a/WebLab/Agendas/AgendaList.aspx.designer.cs b/WebLab/Agendas/AgendaList.aspx.designer.cs index 24ed57e8..eae8585f 100644 --- a/WebLab/Agendas/AgendaList.aspx.designer.cs +++ b/WebLab/Agendas/AgendaList.aspx.designer.cs @@ -1,41 +1,52 @@ //------------------------------------------------------------------------------ -// -// This code was generated by a tool. +// +// Este código fue generado por una herramienta. // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. +// //------------------------------------------------------------------------------ -namespace WebLab.Agendas { - - - public partial class AgendaList { - +namespace WebLab.Agendas +{ + + + public partial class AgendaList + { + /// - /// ddlTipoServicio control. + /// Control ddlTipoServicio. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.DropDownList ddlTipoServicio; - + + /// + /// Control ddlEfectorSolicitante. + /// + /// + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. + /// + protected global::System.Web.UI.WebControls.DropDownList ddlEfectorSolicitante; + /// - /// btnAgregar control. + /// Control btnAgregar. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.Button btnAgregar; - + /// - /// gvLista control. + /// Control gvLista. /// /// - /// Auto-generated field. - /// To modify move field declaration from designer file to code-behind file. + /// Campo generado automáticamente. + /// Para modificarlo, mueva la declaración del campo del archivo del diseñador al archivo de código subyacente. /// protected global::System.Web.UI.WebControls.GridView gvLista; } From 9cf47450411ae385950a2a990f56f006cc704694 Mon Sep 17 00:00:00 2001 From: Vanesa Rimada <80859025+vrimada@users.noreply.github.com> Date: Thu, 30 Apr 2026 12:55:01 -0300 Subject: [PATCH 8/9] mejora tab y efector relacionado --- WebLab/Agendas/AgendaList.aspx | 6 +++--- WebLab/Agendas/AgendaList.aspx.cs | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/WebLab/Agendas/AgendaList.aspx b/WebLab/Agendas/AgendaList.aspx index dbfc0a96..6e7092f4 100644 --- a/WebLab/Agendas/AgendaList.aspx +++ b/WebLab/Agendas/AgendaList.aspx @@ -24,7 +24,7 @@ + onselectedindexchanged="ddlTipoServicio_SelectedIndexChanged" tabindex="1"> + onselectedindexchanged="ddlEfectorSolicitante_SelectedIndexChanged" tabindex="2"> + Text="Agregar" Font-Size="10pt" CssClass="btn btn-primary" Width="100px" tabindex="3"/>