Example #1
0
        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;
     }
 }
Example #3
0
        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);
        }
Example #4
0
        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;
            }
        }
Example #6
0
        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);
                }
            }
        }
Example #7
0
        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);
        }