public bool ComparaFiliacaoCnhPrimeiroEUltimo(Indexacao indexacao, string nomeDeFiliacao) { if (string.IsNullOrEmpty(nomeDeFiliacao) || indexacao == null) { return(false); } var listaNomesPrimeiroValor = Equivalencia.LimpaConteudoNome(indexacao.SegundoValor).Split(' ').ToList(); var listaNomesAchadosNoOcr = Equivalencia.LimpaConteudoNome(nomeDeFiliacao.Replace("0", "O")).Split(' ').ToList(); if (listaNomesPrimeiroValor.Count < 2 || listaNomesAchadosNoOcr.Count < 2) { return(false); } if (listaNomesPrimeiroValor[0].Equals(listaNomesAchadosNoOcr[0])) { if (listaNomesPrimeiroValor[listaNomesPrimeiroValor.Count - 1].Equals(listaNomesAchadosNoOcr[listaNomesAchadosNoOcr.Count - 1])) { return(true); } if (listaNomesAchadosNoOcr.Count > 2) { var nomeDeQuebraDeLinha = listaNomesAchadosNoOcr[listaNomesAchadosNoOcr.Count - 2] + listaNomesAchadosNoOcr[listaNomesAchadosNoOcr.Count - 1]; if (listaNomesPrimeiroValor[listaNomesPrimeiroValor.Count - 1].Equals(nomeDeQuebraDeLinha)) { return(true); } } } return(false); }
public static void anular(Equivalencia equivalencia) { try { using (SqlCommand sentencia = new SqlCommand()) { sentencia.Connection = PrincipalUI.Cnxion; sentencia.CommandType = System.Data.CommandType.StoredProcedure; sentencia.CommandText = Util.Constantes.ConstanteGeneral.ESQUEMA_ALMACEN + "[uspEquivalenciaAnular]"; sentencia.Parameters.Add(new SqlParameter("@pIdEquivalencia", System.Data.SqlDbType.Int)).Value = equivalencia.idEquivalencia; sentencia.ExecuteNonQuery(); } } catch (Exception ex) { throw ex; } }
public List <dynamic> ExtrairTextoGenerico(IList <PalavraReconhecida> palavras) { var listaLimpa = new List <dynamic>(); foreach (var regiao in palavras) { var palavraAtual = Equivalencia.LimpaConteudoNome(regiao.Texto); if (string.IsNullOrEmpty(palavraAtual) == false) { ////listaLimpa.Add(new dynamic() ////{ //// Texto = palavraAtual, //// Localizacao = regiao.Localizacao ////}); } } return(listaLimpa); }
private List <dynamic> ObterListaLimpaDePalavras(IList <PalavraReconhecida> palavras) { var listaLimpa = new List <dynamic>(); if (palavras != null) { foreach (var regiao in palavras) { var palavraAtual = Equivalencia.LimpaConteudoNome(regiao.Texto); if (string.IsNullOrEmpty(palavraAtual) == false) { ////listaLimpa.Add(new dynamic ////{ //// Texto = palavraAtual, //// Localizacao = regiao.Localizacao ////}); } } } return(listaLimpa); }
public static void guardar(Equivalencia equivalencia) { DataTable tablaLineas = new DataTable(); DataTable tablaVias = new DataTable(); tablaLineas = equivalencia.tablaLineas.Copy(); tablaVias = equivalencia.tablaVias.Copy(); GeneralC.quitarColumnaDatatable("Descripción", tablaLineas); GeneralC.quitarColumnaDatatable("Descripción", tablaVias); try { using (SqlCommand sentencia = new SqlCommand()) { sentencia.Connection = PrincipalUI.Cnxion; sentencia.CommandType = System.Data.CommandType.StoredProcedure; sentencia.CommandText = Util.Constantes.ConstanteGeneral.ESQUEMA_ALMACEN + "[uspEquivalenciaCrear]"; sentencia.Parameters.Add(new SqlParameter("@pIdEquivalencia", SqlDbType.Int)).Value = equivalencia.idEquivalencia; sentencia.Parameters.Add(new SqlParameter("@Nombre", SqlDbType.NVarChar)).Value = equivalencia.descripcion; sentencia.Parameters.Add(new SqlParameter("@DescripcionATC", SqlDbType.NVarChar)).Value = equivalencia.descripcionATC; sentencia.Parameters.Add(new SqlParameter("@CodigoATC", SqlDbType.NVarChar)).Value = equivalencia.codigoATC; sentencia.Parameters.Add(new SqlParameter("@GrupoATC", SqlDbType.NVarChar)).Value = equivalencia.grupoATC; sentencia.Parameters.Add(new SqlParameter("@Concentracion", SqlDbType.Float)).Value = equivalencia.concentracion; sentencia.Parameters.Add(new SqlParameter("@Osmolalidad", SqlDbType.Float)).Value = equivalencia.osmolalidad; sentencia.Parameters.Add(new SqlParameter("@IdUnidad", SqlDbType.Int)).Value = equivalencia.idUnidadMedida; sentencia.Parameters.Add(new SqlParameter("@Pos", SqlDbType.Bit)).Value = equivalencia.pos; sentencia.Parameters.Add(new SqlParameter("@MedicamentoEspecial", SqlDbType.Bit)).Value = equivalencia.pos; sentencia.Parameters.Add(new SqlParameter("@IdUsuario", SqlDbType.Int)).Value = Sesion.IdUsuario; sentencia.Parameters.Add(new SqlParameter("@tablaLineas", SqlDbType.Structured)).Value = tablaLineas; sentencia.Parameters.Add(new SqlParameter("@tablaVias", SqlDbType.Structured)).Value = tablaVias; equivalencia.idEquivalencia = (int)sentencia.ExecuteScalar(); } } catch (Exception ex) { throw ex; } }
public void BaterUsandoFullText(Documento documento, IList <PalavraReconhecida> palavras) { if (palavras == null) { return; } if (palavras.Count == 0) { return; } var listaLimpa = new List <dynamic>(); foreach (var regiao in palavras) { var palavraAtual = Equivalencia.LimpaConteudoNome(regiao.Texto); if (string.IsNullOrEmpty(palavraAtual) == false) { ////listaLimpa.Add(new dynamic() ////{ //// Texto = palavraAtual, //// Localizacao = regiao.Localizacao ////}); } } Log.Application.DebugFormat("Documento {0} - Palavras: {1} ", documento.Id, BatimentoFullText.ImprimirLista(listaLimpa)); if (listaLimpa.Count == 0) { return; } var camposSemValor1 = this.indexacaoRepositorio.ObterComMapeamentoPorDocumento(documento); if (camposSemValor1 == null) { return; } if (camposSemValor1.Count == 0) { return; } var ultimoCampo = new Campo(); foreach (var indexacao in camposSemValor1) { if (ultimoCampo.Id == indexacao.Campo.Id || indexacao.PrimeiroValor != null) { continue; } ultimoCampo = indexacao.Campo; var deveSalvar = false; switch (indexacao.Campo.Id) { default: if (indexacao.BateComFullText(listaLimpa)) { deveSalvar = true; } break; } if (deveSalvar) { indexacao.PrimeiroValor = indexacao.SegundoValor; indexacao.ValorFinal = indexacao.SegundoValor; indexacao.ValorUtilizadoParaValorFinal = ValorUtilizadoParaValorFinal.SegundoValor; indexacao.OcrComplementou = true; indexacao.DataPrimeiraDigitacao = DateTime.Now; this.gravaLogDocumentoServico.Executar( LogDocumento.AcaoDocumentoOcr, documento.Id, string.Format("Campo [{0}] complementado pelo ocr-FT. Valor:[{1}]", indexacao.Campo.Description, BatimentoFullText.LimitaString(indexacao.SegundoValor.Trim(), 99))); this.indexacaoRepositorio.Salvar(indexacao); } } }
public bool ComparaFiliacaoCnhNomeAbreviado(Indexacao indexacao, string nomeDeFiliacao) { try { if (string.IsNullOrEmpty(nomeDeFiliacao) || indexacao == null) { return(false); } var listaNomesPrimeiroValor = Equivalencia.LimpaConteudoNome(indexacao.SegundoValor).Split(' ').ToList(); var listaNomesAchadosNoOcr = Equivalencia.LimpaConteudoNome(nomeDeFiliacao.Replace("0", "O")).Split(' ').ToList(); if (listaNomesPrimeiroValor.Count < 2 || listaNomesAchadosNoOcr.Count < 2) { return(false); } ////primeiro nome não pode ser abreviado e precisa ser igual if (!listaNomesPrimeiroValor[0].Equals(listaNomesAchadosNoOcr[0])) { return(false); } //// compara o miolo do nome considerando abreviação var j = 1; for (int i = 1; i < listaNomesPrimeiroValor.Count; i++) { if (listaNomesPrimeiroValor[i].Length == 1) { if (j >= listaNomesAchadosNoOcr.Count) { return(false); } //// esta abreviado... if (!listaNomesPrimeiroValor[i][0].Equals(listaNomesAchadosNoOcr[j][0])) { return(false); } //// verifica se a palavra abreviada é uma preposicao var listaPreposicoes = new List <string> { "DE", "DO", "DOS", "DA", "DAS" }; if (listaPreposicoes.Contains(listaNomesAchadosNoOcr[j].ToUpper())) { return(false); } j++; } else { //// nome sem abreviação if (!listaNomesPrimeiroValor[i].Equals(listaNomesAchadosNoOcr[j])) { ////verifica se houve quebra de linha (concatena com a proxima palavra) if (j >= listaNomesAchadosNoOcr.Count - 1) { return(false); } var palavaConcatenada = listaNomesAchadosNoOcr[j] + listaNomesAchadosNoOcr[j + 1]; if (!listaNomesPrimeiroValor[i].Equals(palavaConcatenada)) { //// ultima chance... se a palavra anterior estava abreviada, o conteudo atual de ocr (j) pode ser sobra de quebra de linha dessa abreviaçao //// Exemplo: Cadastro=MARIA O MARTINS Ocr=MARIA OLIV EIRA MARTINS if (listaNomesPrimeiroValor[i - 1].Length == 1 && listaNomesAchadosNoOcr.Count == listaNomesPrimeiroValor.Count + 1) { i--; j++; continue; } return(false); } //// avança duas posições em j (uma delas aqui, a outra depois do if) j++; } j++; } } //// verifica se sobrou alguma palavra reconhecida a mais (caso do ultimo sobrenome faltando no cadastro) if (listaNomesAchadosNoOcr.Count > j) { return(false); } } catch (Exception) { return(false); } return(true); }