Example #1
0
        public string PreSaveOrden()
        {
            var orden        = new Orden();
            var ordenBl      = new OrdenBl();
            int idEnfermedad = int.Parse(GetSetting <string>("EnfVirusRespiratorio"));

            string fechaObtencion     = Request.Form["fechaObtencion"];
            string idExamen           = GetSetting <string>("Covid19");
            string idTipoMuestra      = Request.Form["TipoMuestraCovid"];
            string nroCelularPaciente = Request.Form["nroCelularPaciente"];
            Guid   idPaciente         = Guid.Parse(Request.Form["GuidIdPaciente"].ToString());

            orden.idOrden = Guid.Parse(Request.Form["idOrden"].ToString());


            List <OrdenDatoClinico> ordenDatoClinicoList = new List <OrdenDatoClinico>();
            var datoClinicoBl     = new DatoClinicoBl();
            var categoriaDatoList = datoClinicoBl.GetCategoriaByEnfermedad(idEnfermedad, 1, idExamen);
            var oEnfermedad       = new Enfermedad();

            oEnfermedad.idEnfermedad      = idEnfermedad;
            oEnfermedad.categoriaDatoList = categoriaDatoList;
            List <Enfermedad> enfermedadListAgregados = new List <Enfermedad>();

            enfermedadListAgregados.Add(oEnfermedad);
            {
                var datosClinicos =
                    enfermedadListAgregados.SelectMany(e => e.categoriaDatoList)
                    .SelectMany(c => c.OrdenDatoClinicoList);
                foreach (var ordenDatoClinico in datosClinicos)
                {
                    var id = ordenDatoClinico.Enfermedad.idEnfermedad.ToString() +
                             ordenDatoClinico.Dato.IdDato.ToString();

                    OrdenDatoClinico ordenDatoClinicoFormulario =
                        ordenDatoClinicoList.FirstOrDefault(x => x.Dato.IdDato == ordenDatoClinico.Dato.IdDato);

                    //Si el dato clinico existe previamente en el formulario entonces se copia los valores del existente
                    if (ordenDatoClinicoFormulario != null)
                    {
                        ordenDatoClinico.noPrecisa   = ordenDatoClinicoFormulario.noPrecisa;
                        ordenDatoClinico.ValorString = ordenDatoClinicoFormulario.ValorString;
                    }
                    else
                    {
                        //Si el dato clinico no existe se crea con los valores obtenidos
                        ordenDatoClinicoFormulario = new OrdenDatoClinico();
                        Dato datoClinico = new Dato();
                        datoClinico.IdDato = ordenDatoClinico.Dato.IdDato;
                        ordenDatoClinicoFormulario.Dato = datoClinico;
                        ordenDatoClinicoList.Add(ordenDatoClinicoFormulario);


                        var    formValue             = Request.Form["valueDato" + id];
                        string checknoprecisa        = Request.Form["checkNoPrecisa" + id];
                        var    checkNoPrecisaBoolean = !string.IsNullOrEmpty(checknoprecisa) && (checknoprecisa.ToLower() == "on" || checknoprecisa.ToLower() == "true");

                        if ((int)Enums.TipoCampo.CHECKBOX == ordenDatoClinico.Dato.IdTipo ||
                            (int)Enums.TipoCampo.COMBO == ordenDatoClinico.Dato.IdTipo)
                        {
                            ordenDatoClinico.noPrecisa   = formValue == null || formValue.Equals("0");
                            ordenDatoClinico.ValorString = formValue == null || formValue.Equals("0")
                                ? ""
                                : formValue;
                        }
                        else
                        {
                            ordenDatoClinico.noPrecisa   = checkNoPrecisaBoolean;
                            ordenDatoClinico.ValorString = !checkNoPrecisaBoolean ? formValue : string.Empty;
                        }
                        ordenDatoClinicoFormulario.noPrecisa   = ordenDatoClinico.noPrecisa;
                        ordenDatoClinicoFormulario.ValorString = ordenDatoClinico.ValorString;
                    }
                }
            }
            orden.enfermedadList    = enfermedadListAgregados;
            orden.IdUsuarioRegistro = Logueado.idUsuario;
            orden.ordenMuestraList  = new List <OrdenMuestra>();
            orden.ordenExamenList   = new List <OrdenExamen>();
            var oOrdenMuestra         = new OrdenMuestra();
            var oOrdenExamen          = new OrdenExamen();
            var oMuestraCodificacion  = new MuestraCodificacion();
            var codigoOrdenGenerado   = string.Empty;
            int EstablecimientoOrigen = string.IsNullOrEmpty(Request.Form["EESSOrigen"].ToString()) ? 0 : int.Parse(Request.Form["EESSOrigen"]);
            int hddDatoEESSOrigenEdit = string.IsNullOrEmpty(Request.Form["hddDatoEESSOrigenEdit"].ToString()) ? 0 : int.Parse(Request.Form["hddDatoEESSOrigenEdit"]);

            //OrdenMuestra
            oOrdenMuestra.TipoMuestra = new TipoMuestra {
                idTipoMuestra = int.Parse(idTipoMuestra)
            };
            oOrdenMuestra.fechaColeccion = DateTime.Parse(fechaObtencion);
            oOrdenMuestra.horaColeccion  = DateTime.Now;
            oOrdenMuestra.idProyecto     = 1;
            orden.idEstablecimiento      = EstablecimientoOrigen;
            orden.editarEstablecimiento  = "N";
            if (EstablecimientoOrigen != hddDatoEESSOrigenEdit)
            {
                //Orden
                orden.editarEstablecimiento = "S";
                orden.codigoOrden           = ordenBl.GenerarCodigoOrden(hddDatoEESSOrigenEdit);
                orden.idEstablecimiento     = hddDatoEESSOrigenEdit;
                //OrdenMuestra
                oMuestraCodificacion = new MuestraBl().GeneraCodigosMuestraKobo(hddDatoEESSOrigenEdit, Logueado.idUsuario, 1);
                oOrdenMuestra.MuestraCodificacion = oMuestraCodificacion;
            }
            orden.ordenMuestraList.Add(oOrdenMuestra);

            orden.Paciente = new Paciente {
                IdPaciente = idPaciente, Celular1 = nroCelularPaciente
            };

            var Res = "Registro Exitoso.";

            try
            {
                ordenBl.UpdateOrdenCovid(orden);
            }
            catch (Exception ex)
            {
                Res = ex.Message;
            }
            return(Res);
        }
        /// <summary>
        /// Descripción: Registra la informacion y libera la memoria de trabajo.
        /// Author: Terceros.
        /// Fecha Creacion: 01/01/2017.
        /// Fecha Modificación: 02/02/2017.
        /// Modificación: Se agregaron comentarios, funcion no utilizada.
        /// </summary>
        /// <param name="idProyecto"></param>
        /// <param name="cmbEstablecimiento"></param>
        /// <param name="cmbEstablecimientoFrecuente"></param>
        /// <param name="observacion"></param>
        /// <param name="nroOficio"></param>
        /// <param name="muestraCodigoExterno"></param>
        /// <param name="muestraFecha"></param>
        /// <param name="muestraHora"></param>
        /// <param name="muestraMaterial"></param>
        /// <param name="paso"></param>
        /// <returns></returns>
        public ActionResult Guardar(String idProyecto, String cmbEstablecimiento, String cmbEstablecimientoFrecuente, String observacion, String nroOficio, String[] muestraCodigoExterno, String[] muestraFecha, String[] muestraHora, String[] muestraMaterial, String paso)
        {
            Orden orden = new Orden();

            if (paso == "2")
            {
                orden = (Orden)this.Session["OrdenBS"];
            }
            //orden.idEnfermedad = cmbEnfermedad;

            orden.idProyecto  = int.Parse(idProyecto);
            orden.observacion = observacion;
            orden.nroOficio   = nroOficio;

            //Obtenemos la lista de examenes
            List <TipoMuestra> examenListAgregados = new List <TipoMuestra>();

            if (this.Session["ExamenListAgregados"] != null)
            {
                examenListAgregados = (List <TipoMuestra>) this.Session["ExamenListAgregados"];
            }

            //Se construye la orden
            orden.ordenExamenList = new List <OrdenExamen>();

            OrdenExamen ordenExamen = new OrdenExamen();

            foreach (TipoMuestra tipoMuestra in examenListAgregados)
            {
                String[] examenArray = (String[])this.Session["examenesSeleccionados"];

                ordenExamen                  = new OrdenExamen();
                ordenExamen.idExamen         = tipoMuestra.examen.idExamen;
                ordenExamen.idEnfermedad     = tipoMuestra.enfermedad.idEnfermedad;
                ordenExamen.ordenMuestraList = new List <OrdenMuestra>();

                orden.ordenExamenList.Add(ordenExamen);
            }



            if (paso == "1")
            {
                if (cmbEstablecimiento != "")
                {
                    orden.idEstablecimiento = Convert.ToInt32(cmbEstablecimiento);
                }
                else
                {
                    orden.idEstablecimiento = Convert.ToInt32(cmbEstablecimientoFrecuente);
                }
                orden.IdUsuarioRegistro = Logueado.idUsuario;

                if (orden.idEstablecimiento == EstablecimientoUsuario.IdEstablecimiento)
                {
                    orden.establecimiento = EstablecimientoUsuario;
                }
                else
                {
                    EstablecimientoBl establecimientBL = new EstablecimientoBl();
                    orden.establecimiento = establecimientBL.GetEstablecimientoById(orden.idEstablecimiento);
                }

                orden.UsuarioRegistro = Logueado;
                orden.FechaRegistro   = DateTime.Now;

                this.Session["OrdenBS"] = orden;
            }

            List <Orden> ordenes = new List <Orden>();

            if (paso == "2")
            {
                orden.IdUsuarioEdicion = Logueado.idUsuario;

                ordenes = (List <Orden>) this.Session["OrdenesBS"];
                this.Session["OrdenBS"] = orden;
            }

            IOrdenBl ordenBl = new OrdenBl();
            int      i       = 0;
            //orden.ordenCepaBancoSangre = new List<CepaBancoSangre>();

            int countOrdenes = ordenes.Count;

            for (i = 0; i < muestraCodigoExterno.Length; i++)
            {
                Orden ordenT = new Orden();
                ordenT.codigoOrden = "";

                ordenT.idEstablecimiento = orden.idEstablecimiento;
                ordenT.establecimiento   = orden.establecimiento;
                ordenT.IdUsuarioRegistro = Logueado.idUsuario;

                if (paso == "2")
                {
                    if (i < countOrdenes)
                    {
                        ordenT = ordenes.ElementAt(i);
                    }
                }

                CepaBancoSangre bs = new CepaBancoSangre();
                bs.codificacion      = muestraCodigoExterno[i];
                bs.IdUsuarioRegistro = Logueado.idUsuario;
                bs.tipo           = 1;
                bs.horaColeccion  = DateTime.ParseExact(muestraFecha[i] + " " + muestraHora[i], "dd/MM/yyyy HH:mm", CultureInfo.InvariantCulture);
                bs.fechaColeccion = DateTime.ParseExact(muestraFecha[i], "dd/MM/yyyy", CultureInfo.InvariantCulture);
                //bs.horaColeccion = new DateTime();
                //bs.fechaColeccion = new DateTime();
                bs.idMaterial = int.Parse(muestraMaterial[i]);

                ordenT.cepaBancoSangre  = bs;
                ordenT.ordenExamenList  = orden.ordenExamenList;
                ordenT.ordenMuestraList = new List <OrdenMuestra>();


                OrdenMuestra ordenMuestra = new OrdenMuestra();
                ordenMuestra.idProyecto                = orden.idProyecto;
                ordenMuestra.Estado                    = 1;
                ordenMuestra.IdUsuarioRegistro         = Logueado.idUsuario;
                ordenMuestra.fechaColeccion            = bs.fechaColeccion;
                ordenMuestra.horaColeccion             = bs.horaColeccion;
                ordenMuestra.TipoMuestra               = new TipoMuestra();
                ordenMuestra.TipoMuestra.idTipoMuestra = TipoMuestraSangreId;
                ordenT.ordenMuestraList.Add(ordenMuestra);


                ordenT.ordenMaterialList = new List <OrdenMaterial>();
                OrdenMaterial ordenMaterial = new OrdenMaterial();
                ordenMaterial.cantidad = 1;
                ordenMaterial.ordenMuestra.Establecimiento = new Establecimiento {
                    IdEstablecimiento = orden.idEstablecimiento
                };
                ordenMaterial.idProyecto        = orden.idProyecto;
                ordenMaterial.idMaterial        = bs.idMaterial;
                ordenMaterial.IdUsuarioRegistro = Logueado.idUsuario;
                ordenMaterial.Estado            = 1;
                ordenT.ordenMaterialList.Add(ordenMaterial);

                ordenT.idProyecto  = orden.idProyecto;
                ordenT.observacion = observacion;
                ordenT.nroOficio   = nroOficio;
                if (paso == "1")
                {
                    ordenBl.InsertOrdenBancoSangre(ordenT);

                    ordenT.UsuarioRegistro = Logueado;
                    ordenT.FechaRegistro   = DateTime.Now;

                    ordenes.Add(ordenT);
                }

                if (paso == "2")
                {
                    if (i >= countOrdenes)
                    {
                        ordenes.Add(ordenT);
                    }
                    ordenT.IdUsuarioEdicion = Logueado.idUsuario;
                    ordenBl.UpdateOrdenBancoSangre(ordenT);
                }
            }


            if (paso == "1")
            {
                this.Session["OrdenesBS"] = ordenes;
                return(RedirectToAction("Editar", "BancoSangre"));
            }

            if (paso == "2")
            {
                if (i < countOrdenes)
                {
                    countOrdenes--;
                    while (i <= countOrdenes)
                    {
                        //Eliminar orden o cambiar estado
                        ordenBl.DeleteOrden(ordenes.ElementAt(i).idOrden);
                        ordenes.RemoveAt(countOrdenes);
                        countOrdenes--;
                    }
                }

                this.Session["OrdenesBS"] = ordenes;
                return(RedirectToAction("Ver", "BancoSangre"));
            }

            //Agregar Orden Registrada correctamente por Nombre Usuario en el resultado
            return(RedirectToAction("Ver", "BancoSangre"));
        }