Identificadores
O FHIR identifica entidades por Identifier, que é essencialmente um par de
sistema e valor:
{ "identifier": [ { "system": "<URI-canônica-do-CNS>", "value": "700000000000000" } ]}O value é o número. O system é a URI que diz que tipo de número é aquele.
Sem o system correto, o mesmo dígito poderia ser um CNS, um CPF ou um
protocolo interno - e o barramento não tem como saber.
Os identificadores brasileiros
Seção intitulada “Os identificadores brasileiros”A RNDS publica NamingSystems para os identificadores nacionais:
| Sigla | O que identifica |
|---|---|
| CPF | Pessoa física |
| CNS | O indivíduo no SUS (Cartão Nacional de Saúde) |
| CNES | Estabelecimento de saúde |
| CBO | Ocupação do profissional (Classificação Brasileira de Ocupações) |
Valide o dígito verificador localmente
Seção intitulada “Valide o dígito verificador localmente”CNS e CPF têm dígitos verificadores com algoritmos próprios. Validar antes de enviar evita ida e volta desnecessária com o barramento, transforma um erro remoto e genérico num erro local e específico.
// CPF - 11 dígitos, dois verificadores por módulo 11export function cpfValido(cpf) { const d = String(cpf).replace(/\D/g, ''); if (d.length !== 11 || /^(\d)\1{10}$/.test(d)) return false;
const dv = (ate) => { let soma = 0; for (let i = 0; i < ate; i++) soma += +d[i] * (ate + 1 - i); const r = (soma * 10) % 11; return r === 10 ? 0 : r; };
return dv(9) === +d[9] && dv(10) === +d[10];}O CNS tem regras distintas conforme o número comece com 1/2 (definitivo) ou 7/8/9 (provisório). Vale usar uma implementação testada em vez de escrever a sua: o kyriosdata/rnds traz utilitários prontos em Java e JavaScript.
Onde isso aparece no documento
Seção intitulada “Onde isso aparece no documento”Patient.identifier- CNS e/ou CPF do indivíduoOrganization.identifier- CNES do estabelecimentoPractitioner.identifier- CPF ou CNS do profissionalPractitionerRole- o vínculo, incluindo a ocupação em CBO
Repare que o profissional aparece em dois recursos: Practitioner é a pessoa,
PractitionerRole é o papel dela num estabelecimento. Confundir os dois é
comum e o perfil rejeita.