MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Compartilhe
    avatar
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 26/07/2011

    [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  luizzlcs em Qua 23 Set 2015, 14:56

    Olá,

    Alguém sabe como validar o número do cartão nacional de saúde?
    avatar
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1820
    Registrado : 13/04/2012

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  Fernando Bueno em Qua 23 Set 2015, 20:46

    Boa tarde;

    Numero de cartão nacional de saúde desconheço, aguarde para vermos se algum colega

    ja teve essa experiência.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 26/07/2011

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  luizzlcs em Qua 23 Set 2015, 20:50

    Encontrei o código em Java, porém não Manjo nada de Java.
    Rotina de validação de Números que iniciam com “1” ou “2”


    public boolean validaCns(String cns){
    if (cns.trim().length() != 15){
    return(false);
    }

    float soma;
    float resto, dv;
    String pis = new String("");
    String resultado = new String("");
    pis = cns.substring(0,11);

    soma = ((Integer.valueOf(pis.substring(0,1)).intValue()) * 15) +
    ((Integer.valueOf(pis.substring(1,2)).intValue()) * 14) +
    ((Integer.valueOf(pis.substring(2,3)).intValue()) * 13) +
    ((Integer.valueOf(pis.substring(3,4)).intValue()) * 12) +
    ((Integer.valueOf(pis.substring(4,5)).intValue()) * 11) +
    ((Integer.valueOf(pis.substring(5,6)).intValue()) * 10) +
    ((Integer.valueOf(pis.substring(6,7)).intValue()) * 9) +
    ((Integer.valueOf(pis.substring(7,Cool).intValue()) * Cool +
    ((Integer.valueOf(pis.substring(8,9)).intValue()) * 7) +
    ((Integer.valueOf(pis.substring(9,10)).intValue()) * 6) +
    ((Integer.valueOf(pis.substring(10,11)).intValue()) * 5);

    resto = soma % 11;
    dv = 11 - resto;

    if (dv == 11){
    dv = 0;
    }

    if (dv == 10){
    soma = ((Integer.valueOf(pis.substring(0,1)).intValue()) * 15) +
    ((Integer.valueOf(pis.substring(1,2)).intValue()) * 14) +
    ((Integer.valueOf(pis.substring(2,3)).intValue()) * 13) +
    ((Integer.valueOf(pis.substring(3,4)).intValue()) * 12) +
    ((Integer.valueOf(pis.substring(4,5)).intValue()) * 11) +
    ((Integer.valueOf(pis.substring(5,6)).intValue()) * 10) +
    ((Integer.valueOf(pis.substring(6,7)).intValue()) * 9) +
    ((Integer.valueOf(pis.substring(7,Cool).intValue()) * Cool +
    ((Integer.valueOf(pis.substring(8,9)).intValue()) * 7) +
    ((Integer.valueOf(pis.substring(9,10)).intValue()) * 6) +
    ((Integer.valueOf(pis.substring(10,11)).intValue()) * 5) + 2;

    resto = soma % 11;
    dv = 11 - resto;
    resultado = pis + "001" + String.valueOf((int)dv);
    }else {
    resultado = pis + "000" + String.valueOf((int)dv);
    }

    if (! cns.equals(resultado)){
    return(false);
    }else {
    return(true);}
    }




    Rotina de validação de Números que iniciam com “7”, “8” ou “9”




    public boolean validaCnsProv(String cns){
    if (cns.trim().length() != 15){
    return(false);
    }

    float dv;
    float resto,soma;

    soma = ((Integer.valueOf(cns.substring(0,1)).intValue()) * 15) +
    ((Integer.valueOf(cns.substring(1,2)).intValue()) * 14) +
    ((Integer.valueOf(cns.substring(2,3)).intValue()) * 13) +
    ((Integer.valueOf(cns.substring(3,4)).intValue()) * 12) +
    ((Integer.valueOf(cns.substring(4,5)).intValue()) * 11) +
    ((Integer.valueOf(cns.substring(5,6)).intValue()) * 10) +
    ((Integer.valueOf(cns.substring(6,7)).intValue()) * 9) +
    ((Integer.valueOf(cns.substring(7,Cool).intValue()) * Cool +
    ((Integer.valueOf(cns.substring(8,9)).intValue()) * 7) +
    ((Integer.valueOf(cns.substring(9,10)).intValue()) * 6) +
    ((Integer.valueOf(cns.substring(10,11)).intValue()) * 5) +
    ((Integer.valueOf(cns.substring(11,12)).intValue()) * 4) +
    ((Integer.valueOf(cns.substring(12,13)).intValue()) * 3) +
    ((Integer.valueOf(cns.substring(13,14)).intValue()) * 2) +
    ((Integer.valueOf(cns.substring(14,15)).intValue()) * 1);

    resto = soma % 11;

    if (resto != 0){
    return(false);
    }else {
    return(true);}
    }


    Observações:

    Não existe máscara para o CNS nem para o Número Provisório. O número que aparece no cartão de forma separada (898 0000 0004 3208) deverá ser digitado sem as separações.
    O 16º número que aparece no Cartão é o número da via do cartão, não é deverá ser digitado.
    avatar
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 26/07/2011

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  luizzlcs em Qua 23 Set 2015, 20:50

    Estou pesquisando +
    avatar
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1820
    Registrado : 13/04/2012

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  Fernando Bueno em Qua 23 Set 2015, 21:03

    Nunca usei mais ja ouvi dizer que esse programa Java to VB Converter (Free Edition)

    faz esse trabalho pesado.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 26/07/2011

    :D

    Mensagem  luizzlcs em Qui 24 Set 2015, 02:06

    Obrigado pela sugestão fernando! vou verificar.
    avatar
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 26/07/2011

    Convertido

    Mensagem  luizzlcs em Qui 24 Set 2015, 02:27

    fiz a conversão

    Acho que não ficou bem ajustado, se alguém conseguir ajustar eu agradeço.


    CÓDIGO JÁVA

    Código:
     public boolean isValid(String s) {
       if (s.matches("[1-2]\\d{10}00[0-1]\\d") || s.matches("[7-9]\\d{14}")) {
          return somaPonderada(s) % 11 == 0;
       }
       return false;
    }

    private int somaPonderada(String s) {
       char[] cs = s.toCharArray();
       int soma = 0;
       for (int i = 0; i < cs.length; i++) {
          soma += Character.digit(cs[i], 10) * (15 - i);
       }
       return soma;
    }

    CÓDIGO JAVA CONVERTIDO PARA VB

    Código:
    Public Overridable Function isValid(ByVal s As String) As Boolean
    If s.matches("[1-2]\d{10}00[0-1]\d") OrElse s.matches("[7-9]\d{14}") Then
    Return somaPonderada(s) Mod 11 = 0
    End If
    Return False
    End Function

    Private Function somaPonderada(ByVal s As String) As Integer
    Dim cs() As Char = s.ToCharArray()
    Dim soma As Integer = 0
    For i As Integer = 0 To cs.Length - 1
    soma += Char.digit(cs(i), 10) * (15 - i)
    Next i
    Return soma
    End Function





    Desemvolvi um aplicativo para uma operadora de planos odontológicos, agora me deparei com o desefio de validar o campo CNS, se alguém poder me ajudar, será a solução, confesso que estacionei.
    avatar
    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3383
    Registrado : 04/04/2010

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  Avelino Sampaio em Qui 24 Set 2015, 09:59

    Luiz,

    veja esta minha sugestão:

    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso!
    avatar
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 26/07/2011

    Validando o CNS (Número do cartão nacional de Saúde)

    Mensagem  luizzlcs em Qui 24 Set 2015, 17:52

    Obrigado Avelino,

    Atividade concluída.

      Data/hora atual: Qua 28 Jun 2017, 18:19