private List<string> ValidarPrestacionHumana(LQCEEntities context, CARGA_PRESTACIONES_HUMANAS_DETALLE objDetalle) { RepositorioPRESTACION_HUMANA _RepositorioPRESTACION_HUMANA = new RepositorioPRESTACION_HUMANA(context); RepositorioCLIENTE _RepositorioCLIENTE = new RepositorioCLIENTE(context); RepositorioCLIENTE_SINONIMO _RepositorioCLIENTE_SINONIMO = new RepositorioCLIENTE_SINONIMO(context); RepositorioPREVISION _RepositorioPREVISION = new RepositorioPREVISION(context); RepositorioGARANTIA _RepositorioGARANTIA = new RepositorioGARANTIA(context); RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO = new RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO(context); RepositorioEXAMEN _RepositorioEXAMEN = new RepositorioEXAMEN(context); RepositorioEXAMEN_SINONIMO _RepositorioEXAMEN_SINONIMO = new RepositorioEXAMEN_SINONIMO(context); var EstadoConError = _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO.GetById((int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.ConError); if(EstadoConError == null) throw new Exception("No se encuentra registro de error en la tabla Estado de Detalle Carga Prestaciones"); var EstadoValidado = _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO.GetById((int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Validado); if (EstadoValidado == null) throw new Exception("No se encuentra registro de error en la tabla Estado de Detalle Carga Prestaciones"); List<string> ListaValidaciones = new List<string>(); // Nombre if (string.IsNullOrEmpty(objDetalle.NOMBRE)) { ListaValidaciones.Add("No se ha señalado nombre del paciente"); } // Ficha if (string.IsNullOrEmpty(objDetalle.FICHA)) { ListaValidaciones.Add("No se ha señalado numero de ficha"); } else { int? _ficha = ISConvert.ToNullableInteger(objDetalle.FICHA); if (!_ficha.HasValue) { ListaValidaciones.Add("FICHA debe ser numérico"); } else { objDetalle.VALOR_FICHA = _ficha.Value; var objPrestacionHumana = _RepositorioPRESTACION_HUMANA.GetById(_ficha.Value); if (objPrestacionHumana != null) ListaValidaciones.Add("Ya existe una prestación en el sistema con el mismo número de ficha"); } } // Fecha de Recepcion if (string.IsNullOrEmpty(objDetalle.FECHA_RECEPCION)) { ListaValidaciones.Add("No se ha señalado FECHA DE RECEPCIÓN en la ficha"); } else { DateTime? pasoFR = ISConvert.ToNullableDateTime(objDetalle.FECHA_RECEPCION); if (!pasoFR.HasValue) { ListaValidaciones.Add("FECHA DE RECEPCIÓN no tiene el formato correcto"); } else { objDetalle.VALOR_FECHA_RECEPCION = pasoFR.Value; } } // Cliente if (string.IsNullOrEmpty(objDetalle.PROCEDENCIA)) { ListaValidaciones.Add("No se ha señalado PROCEDENCIA en la ficha"); } else { var objCliente = _RepositorioCLIENTE.GetByFilter(null, null, null, null, "", objDetalle.PROCEDENCIA).FirstOrDefault(); if (objCliente != null) { objDetalle.CLIENTE = objCliente; } else { var objClienteSinonimo = _RepositorioCLIENTE_SINONIMO.GetByFilterWithReferences(null, objDetalle.PROCEDENCIA).FirstOrDefault(); if (objClienteSinonimo != null) { objDetalle.CLIENTE = objClienteSinonimo.CLIENTE; } else { ListaValidaciones.Add("No se ha podido identificar PROCEDENCIA de la prestación"); } } } // Prevision if (string.IsNullOrEmpty(objDetalle.PREVISION)) { //ListaValidaciones.Add("No se ha señalado PREVISION en la ficha"); } else { var objPrevision = _RepositorioPREVISION.GetByFilter(objDetalle.PREVISION).FirstOrDefault(); if (objPrevision != null) { objDetalle.PREVISION1 = objPrevision; } else { ListaValidaciones.Add("No se ha podido identificar la PREVISION en la ficha"); } } // Garantia if (string.IsNullOrEmpty(objDetalle.GARANTIA)) { //ListaValidaciones.Add("No se ha señalado GARANTIA en la ficha"); } else { var objGarantia = _RepositorioGARANTIA.GetByFilter(objDetalle.GARANTIA).FirstOrDefault(); if (objGarantia != null) { objDetalle.GARANTIA1 = objGarantia; } else { ListaValidaciones.Add("No se ha podido identificar la GARANTIA en la ficha"); } } // Total if (string.IsNullOrEmpty(objDetalle.TOTAL)) { ListaValidaciones.Add("No se ha señalado TOTAL en la ficha"); } else { int? _total = ISConvert.ToNullableInteger(objDetalle.TOTAL); if (!_total.HasValue) { ListaValidaciones.Add("Total no tiene el formato correcto"); } else { objDetalle.VALOR_TOTAL = _total.Value; } } // Examenes int contadorExamen = 1; int contadorExamenesRegistrados = 0; int contadorValorExamen = 0; foreach (var item in objDetalle.CARGA_PRESTACIONES_HUMANAS_EXAMEN.Where(pe => pe.ACTIVO)) { if (!string.IsNullOrEmpty(item.VALOR_EXAMEN) || !string.IsNullOrEmpty(item.NOMBRE_EXAMEN)) { contadorExamenesRegistrados++; if (string.IsNullOrEmpty(item.NOMBRE_EXAMEN)) { ListaValidaciones.Add("No ha señalado nombre de examen [" + contadorExamen.ToString() + "]"); } else { bool ExamenExiste = false; var objExamen = _RepositorioEXAMEN.GetByFilter((int)ENUM_TIPO_PRESTACION.Humanas, "", item.NOMBRE_EXAMEN).FirstOrDefault(); if (objExamen != null) { ExamenExiste = true; item.EXAMEN = objExamen; } else { var objExamenSinonimo = _RepositorioEXAMEN_SINONIMO.GetByFilterWithReferences(null, item.NOMBRE_EXAMEN).FirstOrDefault(); if (objExamenSinonimo != null) { ExamenExiste = true; item.EXAMEN = objExamenSinonimo.EXAMEN; } else { ListaValidaciones.Add("No se ha encontrado información del examen [" + contadorExamen.ToString() + "; " + item.NOMBRE_EXAMEN + "]"); } } if (ExamenExiste && string.IsNullOrEmpty(item.VALOR_EXAMEN)) { ListaValidaciones.Add("No se ha señalado valor del examen [" + contadorExamen.ToString() + "; " + item.NOMBRE_EXAMEN + "]"); } } if (string.IsNullOrEmpty(item.VALOR_EXAMEN)) { //ListaValidaciones.Add("No se ha señalado valor de examen [" + contadorExamen.ToString() + "]"); } else { int? _valorExamen = ISConvert.ToNullableInteger(item.VALOR_EXAMEN); if (!_valorExamen.HasValue) { ListaValidaciones.Add("Valor de examen no tiene el formato correcto [" + contadorExamen.ToString() + "]"); } //else if (_valorExamen == 0) //{ // //ListaValidaciones.Add("Valor de examen no tiene el formato correcto [" + contadorExamen.ToString() + "]"); //} else { contadorValorExamen++; item.VALOR_VALOR_EXAMEN = _valorExamen; } } //PENDIENTE: Validar que el valor del examen sea igual al convenio //context.ApplyPropertyChanges("CARGA_PRESTACIONES_HUMANAS_EXAMEN", item); } else if (contadorExamen == 1) { ListaValidaciones.Add("No ha señalado nombre y valor de examen [" + contadorExamen.ToString() + "]"); } contadorExamen++; } if (contadorExamenesRegistrados == 0) ListaValidaciones.Add("La ficha debe registrar al menos 1 examen. "); if (contadorValorExamen == 0) ListaValidaciones.Add("La ficha debe registrar al menos 1 examen con valor. "); if (ListaValidaciones.Any()) { objDetalle.CARGA_PRESTACIONES_DETALLE_ESTADO = EstadoConError; string errores = ""; foreach (var item in ListaValidaciones) errores += item + Environment.NewLine; objDetalle.MENSAJE_ERROR = errores; } else { objDetalle.CARGA_PRESTACIONES_DETALLE_ESTADO = EstadoValidado; objDetalle.MENSAJE_ERROR = ""; } //context.ApplyPropertyChanges("CARGA_PRESTACIONES_HUMANAS_DETALLE", objDetalle); return ListaValidaciones; }
/// <summary> /// Realiza carga en tablas temporales del contenido del archivo Excel /// </summary> /// <param name="IdTipoPrestacion">Id. de tipo de prestación</param> /// <param name="NombreArchivo">Nombre del archivo adjunto</param> /// <param name="ContenidoArchivo">Contenido binario del archivo adjunto</param> /// <returns>Retorna Id. de encabezado de carga de prestaciones</returns> public int UploadArchivoPrestaciones(int IdTipoPrestacion, string NombreArchivo, byte[] ContenidoArchivo) { Init(); try { using (LQCEEntities context = new LQCEEntities()) { if (string.IsNullOrEmpty(NombreArchivo)) throw new Exception("No se ha señalado nombre de archivo Excel"); if (ContenidoArchivo == null) throw new Exception("No se ha incluido contenido del archivo Excel"); RepositorioTIPO_PRESTACION _RepositorioTIPO_PRESTACION = new RepositorioTIPO_PRESTACION(context); RepositorioCARGA_PRESTACIONES_ESTADO _RepositorioCARGA_PRESTACIONES_ESTADO = new RepositorioCARGA_PRESTACIONES_ESTADO(context); RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO = new RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO(context); var objTipoPrestacion = _RepositorioTIPO_PRESTACION.GetById(IdTipoPrestacion); if (objTipoPrestacion == null) throw new Exception("No se ha encontrado información del Tipo de Prestación"); var objEstado = _RepositorioCARGA_PRESTACIONES_ESTADO.GetById((int)ENUM_CARGA_PRESTACIONES_ESTADO.Pendiente); if (objEstado == null) throw new Exception("No se ha encontrado información del Estado de Carga de Prestaciones"); var objEstadoDetalle = _RepositorioCARGA_PRESTACIONES_DETALLE_ESTADO.GetById((int)ENUM_CARGA_PRESTACIONES_DETALLE_ESTADO.Pendiente); if (objEstadoDetalle == null) throw new Exception("No se ha encontrado información del Estado de Detalle de Carga de Prestaciones"); string archivo = DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + NombreArchivo; File.WriteAllBytes(Properties.Settings.Default.DIR_CARGA_EXCEL + archivo, ContenidoArchivo); var datos = ISExcel.ReadExcelFile(Properties.Settings.Default.DIR_CARGA_EXCEL + archivo, true); if (datos == null) throw new Exception("No se ha leido información en la planilla Excel"); CARGA_PRESTACIONES_ENCABEZADO objEncabezado = new CARGA_PRESTACIONES_ENCABEZADO(); objEncabezado.FECHA_CARGA = DateTime.Now; objEncabezado.TIPO_PRESTACION = objTipoPrestacion; objEncabezado.CARGA_PRESTACIONES_ESTADO = objEstado; objEncabezado.ARCHIVO = archivo; objEncabezado.ACTIVO = true; context.AddToCARGA_PRESTACIONES_ENCABEZADO(objEncabezado); if (IdTipoPrestacion == (int)ENUM_TIPO_PRESTACION.Humanas) { foreach (DataRow item in datos.Rows) { bool TieneDatos = false; foreach (var col in item.ItemArray) { if (!string.IsNullOrEmpty(col.ToString())) TieneDatos = true; } if (TieneDatos) { // Convertir fecha formato dd.mm.aa DateTime? pasoFR = null; if (!string.IsNullOrEmpty(item["FECHA RECEPCION"].ToString())) { string[] arrFechaRecepcion = item["FECHA RECEPCION"].ToString().Split('.'); if (arrFechaRecepcion.Count() == 3) { int? dias = ISConvert.ToNullableInteger(arrFechaRecepcion[0]); int? mes = ISConvert.ToNullableInteger(arrFechaRecepcion[1]); int? año = ISConvert.ToNullableInteger(arrFechaRecepcion[2]); if (dias.HasValue && mes.HasValue && año.HasValue) { if (año < 100) { año = año + 2000; } string fr = dias.Value.ToString() + "-" + mes.Value.ToString() + "-" + año.Value.ToString(); pasoFR = ISConvert.ToNullableDateTime(fr); } } } CARGA_PRESTACIONES_HUMANAS_DETALLE objDetalle = new CARGA_PRESTACIONES_HUMANAS_DETALLE(); objDetalle.CARGA_PRESTACIONES_ENCABEZADO = objEncabezado; objDetalle.NOMBRE = item["NOMBRE"].ToString(); objDetalle.FICHA = item["FICHA"].ToString(); if (pasoFR.HasValue) { objDetalle.FECHA_RECEPCION = pasoFR.Value.ToString("dd-MM-yyyy") + " " + item["HORA RECEPCION"].ToString(); } else { objDetalle.FECHA_RECEPCION = item["FECHA RECEPCION"].ToString() + "." + item["HORA RECEPCION"].ToString(); } objDetalle.TELEFONO = item["TELEFONO"].ToString(); objDetalle.MEDICO = item["MEDICO"].ToString(); objDetalle.PROCEDENCIA = item["PROCEDENCIA"].ToString(); objDetalle.PREVISION = item["PREVISION"].ToString(); objDetalle.GARANTIA = item["GARANTIA"].ToString(); objDetalle.PENDIENTE = item["PENDIENTE"].ToString(); objDetalle.PAGADO = item["PAGADO"].ToString(); objDetalle.TOTAL = item["TOTAL"].ToString(); objDetalle.RECEPCION = item["RECEPCION"].ToString(); objDetalle.EDAD = item["EDAD"].ToString(); objDetalle.RUT = item["RUT"].ToString(); objDetalle.ACTIVO = true; objDetalle.CARGA_PRESTACIONES_DETALLE_ESTADO = objEstadoDetalle; objDetalle.MENSAJE_ERROR = ""; objDetalle.FECHA_ACTUALIZACION = DateTime.Now; objDetalle.CLIENTE = null; objDetalle.VALOR_FICHA = null; objDetalle.VALOR_FECHA_MUESTRA = null; objDetalle.VALOR_FECHA_RECEPCION = null; objDetalle.PREVISION1 = null; objDetalle.GARANTIA1 = null; objDetalle.VALOR_FECHA_ENTREGA_RESULTADOS = null; AgregarExamenHumano(context, objDetalle, item, "EXAMEN 1", "VALOR 1"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 2", "VALOR 2"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 3", "VALOR 3"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 4", "VALOR 4"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 5", "VALOR 5"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 6", "VALOR 6"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 7", "VALOR 7"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 8", "VALOR 8"); AgregarExamenHumano(context, objDetalle, item, "EXAMEN 9", "VALOR 9"); ValidarPrestacionHumana(context, objDetalle); context.AddToCARGA_PRESTACIONES_HUMANAS_DETALLE(objDetalle); } } } else if (IdTipoPrestacion == (int)ENUM_TIPO_PRESTACION.Veterinarias) { foreach (DataRow item in datos.Rows) { // Convertir fecha formato dd.mm.aa DateTime? pasoFR = null; if (!string.IsNullOrEmpty(item["FECHA RECEPCION"].ToString())) { string[] arrFechaRecepcion = item["FECHA RECEPCION"].ToString().Split('.'); if (arrFechaRecepcion.Count() == 3) { int? dias = ISConvert.ToNullableInteger(arrFechaRecepcion[0]); int? mes = ISConvert.ToNullableInteger(arrFechaRecepcion[1]); int? año = ISConvert.ToNullableInteger(arrFechaRecepcion[2]); if (dias.HasValue && mes.HasValue && año.HasValue) { if (año < 100) { año = año + 2000; } string fr = dias.Value.ToString() + "-" + mes.Value.ToString() + "-" + año.Value.ToString(); pasoFR = ISConvert.ToNullableDateTime(fr); } } } CARGA_PRESTACIONES_VETERINARIAS_DETALLE objDetalle = new CARGA_PRESTACIONES_VETERINARIAS_DETALLE(); objDetalle.CARGA_PRESTACIONES_ENCABEZADO = objEncabezado; objDetalle.FICHA = item["INGRESO"].ToString(); objDetalle.NOMBRE = item["NOMBRE"].ToString(); objDetalle.ESPECIE = item["ESPECIE"].ToString(); objDetalle.RAZA = item["RAZA"].ToString(); objDetalle.SEXO = item["SEXO"].ToString(); objDetalle.EDAD = item["EDAD"].ToString(); objDetalle.TELEFONO = item["TELEFONO"].ToString(); objDetalle.PROCEDENCIA = item["PROCEDENCIA"].ToString(); objDetalle.GARANTIA = item["GARANTIA"].ToString(); objDetalle.PENDIENTE = item["PENDIENTE"].ToString(); objDetalle.TOTAL = item["TOTAL"].ToString(); objDetalle.RECEPCION = item["RECEPCION"].ToString(); objDetalle.MEDICO = item["MEDICO"].ToString(); objDetalle.SOLICITA = item["SOLICITANTE"].ToString(); if (pasoFR.HasValue) { objDetalle.FECHA_RECEPCION = pasoFR.Value.ToString("dd-MM-yyyy") + " " + item["HORA RECEPCION"].ToString(); } else { objDetalle.FECHA_RECEPCION = item["FECHA RECEPCION"].ToString() + "." + item["HORA RECEPCION"].ToString(); } objDetalle.FICHA_CLINICA = item["FICHA"].ToString(); //objDetalle.FECHA_MUESTRA = item["FECHA MUESTRA"].ToString(); //objDetalle.FECHA_RESULTADOS = item["FECHA RESULTADOS"].ToString(); //objDetalle.PAGADO = item["PAGADO"].ToString(); objDetalle.ACTIVO = true; objDetalle.CARGA_PRESTACIONES_DETALLE_ESTADO = objEstadoDetalle; objDetalle.MENSAJE_ERROR = ""; objDetalle.FECHA_ACTUALIZACION = DateTime.Now; objDetalle.VALOR_FICHA = null; objDetalle.CLIENTE = null; //objDetalle.VALOR_FECHA_MUESTRA = null; objDetalle.VALOR_FECHA_RECEPCION = null; objDetalle.PREVISION = null; objDetalle.GARANTIA1 = null; //objDetalle.VALOR_FECHA_ENTREGA_RESULTADOS = null; objDetalle.ESPECIE1 = null; objDetalle.RAZA1 = null; AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 1", "VALOR 1"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 2", "VALOR 2"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 3", "VALOR 3"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 4", "VALOR 4"); AgregarExamenVeterinario(context, objDetalle, item, "EXAMEN 5", "VALOR 5"); ValidarPrestacionVeterinaria(context, objDetalle); context.AddToCARGA_PRESTACIONES_VETERINARIAS_DETALLE(objDetalle); } } else { throw new Exception("Tipo de prestación no válido"); } context.SaveChanges(); return objEncabezado.ID; } } catch (Exception ex) { ISException.RegisterExcepcion(ex); Error = ex.Message; throw ex; } }
private void AgregarExamenHumano(LQCEEntities context, CARGA_PRESTACIONES_HUMANAS_DETALLE objDetalle, DataRow item, string ColumnaExamen, string ColumnaValor) { if (!string.IsNullOrEmpty(item[ColumnaExamen].ToString()) || !string.IsNullOrEmpty(item[ColumnaValor].ToString())) { CARGA_PRESTACIONES_HUMANAS_EXAMEN objExamen = new CARGA_PRESTACIONES_HUMANAS_EXAMEN(); objExamen.CARGA_PRESTACIONES_HUMANAS_DETALLE = objDetalle; objExamen.NOMBRE_EXAMEN = item[ColumnaExamen].ToString(); objExamen.VALOR_EXAMEN = item[ColumnaValor].ToString(); objExamen.ACTIVO = true; objExamen.FECHA_ACTUALIZACION = DateTime.Now; objExamen.EXAMEN = null; context.AddToCARGA_PRESTACIONES_HUMANAS_EXAMEN(objExamen); } }