Last active
October 4, 2023 15:51
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
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
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