示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="tipo">1: Referenciar
        ///                    2: Recepcionar
        ///                    3: Derivar
        /// </param>
        /// <param name="LstOrdenes"></param>
        /// <returns></returns>
        public int ValidaExamenes(int tipo, List <OrdenMuestraRecepcion> LstOrdenes)
        {
            int Resultado = 0;
            //Obtener Lista de Examenes válidos por el laboratorio seleccionado
            var laboratorioExamenBl = new LaboratorioExamenBl();
            var TipoMuestraExamenBl = new ExamenTipoMuestraBl();
            List <ExamenLaboratorio> listaExamenesValidos = new List <ExamenLaboratorio>();

            if (LstOrdenes != null)
            {
                foreach (var itemR in LstOrdenes)
                {
                    var listaTipoMuestraValidosTmp = TipoMuestraExamenBl.GetTipoMuestraByExamen(itemR.idExamen);
                    var examenValido      = laboratorioExamenBl.GetExamenesByLaboratorio(itemR.idLaboratorioDestino).FindAll(p => p.IdExamen == itemR.idExamen);
                    var tipomuestraValido = listaTipoMuestraValidosTmp.FindAll(p => p.IdTipoMuestra == itemR.idTipoMuestra);

                    if (!examenValido.Any() || !tipomuestraValido.Any() && tipo > 1)
                    {
                        Resultado = Resultado + 1;
                        //JRCR - 18Marzo2018
                        //Session["ExamenError"] = examenValido.FirstOrDefault().Examen.nombre.ToString();
                        ExamenError = new ExamenBl().GetExamenById(itemR.idExamen).nombre;
                    }
                }
            }

            return(Resultado);
        }
示例#2
0
        public string OrdenMuestraProcesoRom(OrdenMuestraRom xOrdenMuestraRom, Guid id, int idusuario, int IdEstablecimiento)
        {
            string Respuesta                  = "";
            var    totalMuestrasValidasR      = 0;
            var    totalMuestrasInvalidasR    = 0;
            var    totalMuestrasRecepcionadas = 0;
            var    totalMuestras              = 0;

            using (var ordenMuestraDal = new OrdenMuestraDal())
            {
                ordenMuestraDal.BeginTransaction(System.Data.IsolationLevel.ReadCommitted);
                try
                {
                    //Referenciar muestras
                    if (xOrdenMuestraRom.listaOrdenesMuestra.Count > 0)
                    {
                        totalMuestrasInvalidasR = ValidaExamenes(1, xOrdenMuestraRom.listaOrdenesMuestra);
                        if (totalMuestrasInvalidasR > 0)
                        {
                            ordenMuestraDal.Rollback();
                            return(totalMuestrasInvalidasR + "_" + totalMuestrasRecepcionadas + "_" + totalMuestras + "_" + ExamenError);
                        }
                        else
                        {
                            ordenMuestraDal.ReferenciarMuestras(xOrdenMuestraRom.listaOrdenesMuestra, idusuario);
                        }
                    }
                    //Crear y Referenciar muestras
                    if (xOrdenMuestraRom.listaOrdenesMuestraCrearReferenciar.Count > 0)
                    {
                        totalMuestrasInvalidasR = ValidaExamenes(2, xOrdenMuestraRom.listaOrdenesMuestraCrearReferenciar);
                        if (totalMuestrasInvalidasR > 0)
                        {
                            ordenMuestraDal.Rollback();
                            return(totalMuestrasInvalidasR + "_" + totalMuestrasRecepcionadas + "_" + totalMuestras + "_" + ExamenError);
                        }
                        else
                        {
                            ordenMuestraDal.RegistrarMuestras(xOrdenMuestraRom.listaOrdenesMuestraCrearReferenciar, id, idusuario);
                        }
                    }
                    //Derivar muestras juan muga
                    //revisar si se puede colocar mas abajo, donde se valida la variable lstNewGuid
                    var lstNewGuid = new List <OrdenMuestraRecepcion>();
                    if (xOrdenMuestraRom.listaOrdenesDerivarMuestra.Count > 0)
                    {
                        totalMuestrasInvalidasR = ValidaExamenes(2, xOrdenMuestraRom.listaOrdenesDerivarMuestra);
                        if (totalMuestrasInvalidasR > 0)
                        {
                            ordenMuestraDal.Rollback();
                            return(totalMuestrasInvalidasR + "_" + totalMuestrasRecepcionadas + "_" + totalMuestras + "_" + ExamenError);
                        }
                        else
                        {
                            lstNewGuid = ordenMuestraDal.DerivarReferenciaMuestras(xOrdenMuestraRom.listaOrdenesDerivarMuestra, idusuario);
                        }
                    }
                    //Recepcion de Muestras
                    if (xOrdenMuestraRom.listaOrdenesMuestraRecepcionar.Count > 0)
                    {
                        //Obtener Lista de Examenes válidos por el laboratorio seleccionado
                        var laboratorioExamenBl  = new LaboratorioExamenBl();
                        var TipoMuestraExamenBl  = new ExamenTipoMuestraBl();//juanmuga
                        var listaExamenesValidos = laboratorioExamenBl.GetExamenesByLaboratorio(IdEstablecimiento);

                        if (listaExamenesValidos != null)
                        {
                            foreach (var itemR in xOrdenMuestraRom.listaOrdenesMuestraRecepcionar)
                            {
                                var listaTipoMuestraValidosTmp = TipoMuestraExamenBl.GetTipoMuestraByExamen(itemR.idExamen);             //juan muga
                                var examenValido      = listaExamenesValidos.FindAll(p => p.IdExamen == itemR.idExamen);
                                var tipomuestraValido = listaTipoMuestraValidosTmp.FindAll(p => p.IdTipoMuestra == itemR.idTipoMuestra); //juan muga

                                //if (examenValido.Any())
                                if (examenValido.Any() && tipomuestraValido.Any())//juanmuga
                                {
                                    xOrdenMuestraRom.listaParaReferenciarCrear.Add(itemR);
                                    totalMuestrasValidasR = totalMuestrasValidasR + 1;
                                }
                                else
                                {
                                    totalMuestrasInvalidasR = totalMuestrasInvalidasR + 1;
                                    ExamenError             = ExamenError + ", " + new ExamenBl().GetExamenById(itemR.idExamen).nombre;
                                }
                            }
                        }

                        //Existe muestras a rececepcionar válidas
                        if (xOrdenMuestraRom.listaParaReferenciarCrear.Any())
                        {
                            totalMuestrasRecepcionadas = xOrdenMuestraRom.listaParaReferenciarCrear.Count;
                            //derivar: cambio de guid = idordenmuestrarecpcionar juan muga
                            var listaParaDerivar = new List <OrdenMuestraRecepcion>();
                            foreach (var item in xOrdenMuestraRom.listaParaReferenciarCrear)
                            {
                                foreach (var itemD in lstNewGuid)
                                {
                                    if (item.idOrdenMuestraRecepcion == itemD.idOrdenMuestraRecepcion)
                                    {
                                        item.idOrdenMuestraRecepcion = itemD.NewidOrdenMuestraRecepcion;
                                        listaParaDerivar.Add(item);
                                    }
                                }
                            }
                            if (listaParaDerivar.Count > 0)
                            {
                                ordenMuestraDal.RecepcionarMuestras(listaParaDerivar, id, 1, idusuario);
                            }
                            if (xOrdenMuestraRom.listaParaReferenciarCrear.Count > 0)
                            {
                                ordenMuestraDal.RecepcionarMuestras(xOrdenMuestraRom.listaParaReferenciarCrear, id, 1, idusuario);
                            }
                        }
                    }

                    //Crear y Referenciar muestras
                    //if (listaOrdenesMuestraCrearReferenciar.Count > 0)
                    //{
                    //    ordenMuestraBl.RegistrarMuestras(listaOrdenesMuestraCrearReferenciar, Guid.Parse(id), Logueado.idUsuario);
                    //}

                    //Crear y Recepcionar Muestras
                    if (xOrdenMuestraRom.listaOrdenesMuestraCrearRecepcionar.Count > 0)
                    {
                        //Obtener Lista de Examenes válidos por el laboratorio seleccionado
                        var laboratorioExamenBl     = new LaboratorioExamenBl();
                        var TipoMuestraExamenBl     = new ExamenTipoMuestraBl();
                        var listaExamenesValidosTmp = laboratorioExamenBl.GetExamenesByLaboratorio(IdEstablecimiento);

                        if (listaExamenesValidosTmp != null)
                        {
                            foreach (var itemR in xOrdenMuestraRom.listaOrdenesMuestraCrearRecepcionar)
                            {
                                var listaTipoMuestraValidosTmp = TipoMuestraExamenBl.GetTipoMuestraByExamen(itemR.idExamen);
                                var tipomuestraValido          = listaTipoMuestraValidosTmp.FindAll(p => p.IdTipoMuestra == itemR.idTipoMuestra);//juanmuga

                                var examenValido = listaExamenesValidosTmp.FindAll(p => p.IdExamen == itemR.idExamen);

                                if (examenValido.Any() && tipomuestraValido.Any())//juan muga
                                {
                                    xOrdenMuestraRom.listaParaRecepcionarCrear.Add(itemR);
                                    totalMuestrasValidasR = totalMuestrasValidasR + 1;
                                }
                                else
                                {
                                    itemR.fechaEnvio     = null;
                                    itemR.horaEnvio      = null;
                                    itemR.fechaRecepcion = null;
                                    itemR.horaRecepcion  = null;
                                    xOrdenMuestraRom.listaParaRecepcionarCrearSinRecepcion.Add(itemR);
                                    totalMuestrasInvalidasR = totalMuestrasInvalidasR + 1;
                                }
                            }
                        }

                        //Crear y Recepcionar Muestras
                        if (xOrdenMuestraRom.listaParaRecepcionarCrear.Any())
                        {
                            totalMuestrasRecepcionadas = xOrdenMuestraRom.listaParaRecepcionarCrear.Count;
                            ordenMuestraDal.RegistrarMuestrasConRecepcion(xOrdenMuestraRom.listaParaRecepcionarCrear, id, idusuario);
                        }

                        //Crear Muestras - NO RECEPCIONA
                        if (!xOrdenMuestraRom.listaParaRecepcionarCrearSinRecepcion.Any())
                        {
                            ordenMuestraDal.Rollback();
                            return(totalMuestrasInvalidasR + "_" + totalMuestrasRecepcionadas + "_" + totalMuestras + "_" + ExamenError + "_ ");
                        }
                        totalMuestrasRecepcionadas = xOrdenMuestraRom.listaParaRecepcionarCrearSinRecepcion.Count;
                        ordenMuestraDal.RegistrarMuestrasSinRecepcion(xOrdenMuestraRom.listaParaRecepcionarCrearSinRecepcion, id, idusuario);
                    }
                    if (totalMuestrasInvalidasR == 0)
                    {
                        ordenMuestraDal.Commit();
                    }
                    else
                    {
                        ordenMuestraDal.Rollback();
                        return(totalMuestrasInvalidasR + "_" + totalMuestrasRecepcionadas + "_" + totalMuestras + "_" + ExamenError);
                    }
                }
                catch (Exception ex)
                {
                    ordenMuestraDal.Rollback();
                    Respuesta = ex.Message;
                }
            }


            return(Respuesta);
        }