Skip to content

Instantly share code, notes, and snippets.

@philippeoz
Last active October 4, 2023 15:51
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save philippeoz/def8a48ffff8b293a6d6a10ac4494a24 to your computer and use it in GitHub Desktop.
Save philippeoz/def8a48ffff8b293a6d6a10ac4494a24 to your computer and use it in GitHub Desktop.
Função para validar número do CNS - Cartão Nacional de Saúde ou Cartão do SUS
def cns_is_valid(cns):
"""
Função para validar número do CNS - Cartão Nacional de Saúde ou Cartão do SUS
:param cns: Número de CNS que será validado
:type cns: String (Caso não seja, será transformado)
:rtype: Boolean
"""
cns = ''.join(filter(str.isdigit, str(cns)))
if len(cns) != 15:
return False
return sum(
[int(cns[i]) * (15 - i) for i in range(15)]
) % 11 == 0
@wilsonlealjunior
Copy link

nice codigo! parabéns ao envolvidos

@fabioconverg
Copy link

Parabéns pelo código e muito obrigado por compartilha-lo!

@willamylp
Copy link

Caramba, parabéns!
Função simples, direta e objetiva. Vai ajudar demais no meu projeto.

@ricardodarocha
Copy link

ricardodarocha commented Jun 11, 2023

Infelizmente eu encontrei uma função antiga que possui algumas variações. Poderia confirmar se este algoritmo atende a todos os registros de CNS (mesmo os antigos)? Obrigado.

Link de referência https://integracao.esusab.ufsc.br/v211/docs/algoritmo_CNS.html

@willamylp
Copy link

Infelizmente eu encontrei uma função antiga que possui algumas variações. Poderia confirmar se este algoritmo atende a todos os registros de CNS (mesmo os antigos)? Obrigado.

Link de referência https://integracao.esusab.ufsc.br/v211/docs/algoritmo_CNS.html

Até hoje, pelo uso que fiz dessa função, atendeu sim a todas as variações do CNS (1, 2, 6, 7, 8 e 9).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment