Cliente Python assíncrono para integração com a RNDS em aplicações Django.
Project description
3s-rnds-client
3s-rnds-client e uma biblioteca Python assincrona para integracao com a RNDS em aplicacoes Django.
Instalacao
pip install 3s-rnds-client
Visao geral
O cliente concentra a infraestrutura comum de:
- autenticacao
CERTeAPI - cache de token RNDS usando o cache configurado do Django
- transporte HTTP assincrono com
httpx - retry automatico em falhas transientes
- organizacao por capacidades de dominio
Uso rapido
from rnds_client import RndsClient
async def buscar_paciente(identificador: str):
async with await RndsClient.create() as client:
return await client.pacientes.buscar_pessoa(identificador)
Modo debug
Para diagnosticar problemas de autenticacao e de consumo da API da RNDS, use buscar_pessoa_debug.
O metodo imprime no terminal do servidor o passo a passo do processo, incluindo:
- variaveis e configuracoes relevantes do fluxo
- identificador normalizado e URL final da busca
- leitura do cache de token
- autenticacao
APIouCERT - headers enviados
- status e corpo das respostas HTTP
- retries e payload final formatado
Exemplo de uso:
from rnds_client import RndsClient
async def buscar_paciente_debug(identificador: str):
async with await RndsClient.create() as client:
return await client.pacientes.buscar_pessoa_debug(identificador)
Por padrao, buscar_pessoa_debug usa force_refresh_token=True para forcar a autenticacao e exibir o fluxo completo.
Se quiser reproduzir o comportamento padrao da biblioteca tentando reutilizar o token em cache, passe force_refresh_token=False.
from rnds_client import RndsClient
async def buscar_paciente_debug_com_cache(identificador: str):
async with await RndsClient.create() as client:
return await client.pacientes.buscar_pessoa_debug(
identificador,
force_refresh_token=False,
)
Os logs do modo debug mascaram parcialmente tokens e senha antes de exibi-los.
Configuracao no Django
O pacote usa o cache padrao do Django para armazenar o token RNDS. Antes de usar o client, garanta que o projeto tenha CACHES configurado.
Exemplo de variaveis de ambiente:
RNDS_API_URL=https://rn-ehr-services.saude.gov.br/api/
RNDS_AUTH_TOKEN_URL=https://ehr-auth.saude.gov.br/api/
RNDS_CNS_GESTOR=
Para compatibilidade com configuracoes legadas, a biblioteca tambem aceita CNS_SEC_SAUDE.
Modo CERT
RNDS_AUTH_METHOD=CERT
RNDS_CERT=/caminho/para/cert.pem
RNDS_KEY=/caminho/para/key.pem
Modo API
RNDS_AUTH_METHOD=API
RNDS_AUTH_LOGIN_URL=https://api-intermediaria.exemplo/login
RNDS_AUTH_TOKEN_URL=https://api-intermediaria.exemplo/token
RNDS_USER=usuario
RNDS_PASSWORD=senha
Se RNDS_AUTH_METHOD nao for informado, o pacote escolhe API quando houver RNDS_USER ou RNDS_PASSWORD; caso contrario, usa CERT.
API publica
O ponto de entrada principal continua sendo RndsClient, com capacidades expostas por dominio:
client.pacientesclient.estabelecimentosclient.rira
Metodos de pacientes:
client.pacientes.buscar_pessoa(identificador)client.pacientes.buscar_pessoa_debug(identificador, force_refresh_token=True)
Uso explicito da infraestrutura base:
from httpx import AsyncClient
from rnds_client.base_client import RndsBaseClient
from rnds_client.client import RndsClient
from rnds_client.settings import RndsSettings
async def criar_client_manual():
settings = RndsSettings.from_environment()
base_client = RndsBaseClient(settings=settings, http_client=AsyncClient())
return RndsClient(base_client=base_client)
Tratamento de erros
As excecoes proprias do pacote sao:
RndsConfigurationErrorRndsAuthenticationError
Chamadas HTTP tambem podem propagar erros do httpx.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file 3s_rnds_client-0.1.4.tar.gz.
File metadata
- Download URL: 3s_rnds_client-0.1.4.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd260132bd1290d96dcffd6a7b00dd838eaf9d63c3713ccfde9990fa2ec44913
|
|
| MD5 |
a8832a7681222225813c91ba59c93191
|
|
| BLAKE2b-256 |
e6d650549269cbd29e896102ec97848a144b48fee1cc42ab1c65e6c96bb63b08
|
Provenance
The following attestation bundles were made for 3s_rnds_client-0.1.4.tar.gz:
Publisher:
publish.yml on 3S-Saude/3s-rnds-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
3s_rnds_client-0.1.4.tar.gz -
Subject digest:
bd260132bd1290d96dcffd6a7b00dd838eaf9d63c3713ccfde9990fa2ec44913 - Sigstore transparency entry: 1349486665
- Sigstore integration time:
-
Permalink:
3S-Saude/3s-rnds-client@3a82f61a4bb15fdcce6727f61b4220827576c15c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/3S-Saude
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3a82f61a4bb15fdcce6727f61b4220827576c15c -
Trigger Event:
pull_request
-
Statement type:
File details
Details for the file 3s_rnds_client-0.1.4-py3-none-any.whl.
File metadata
- Download URL: 3s_rnds_client-0.1.4-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e32a5130ce9f9f24b3ce247db4d52c1db45633a49b38349e44b4e611f84cd3d
|
|
| MD5 |
2abd0bbecd0783059e407cab6c9f382c
|
|
| BLAKE2b-256 |
a7c7085e45f8356527f54e008c1401ac31a7de03013211d73a5e536ef4c96b50
|
Provenance
The following attestation bundles were made for 3s_rnds_client-0.1.4-py3-none-any.whl:
Publisher:
publish.yml on 3S-Saude/3s-rnds-client
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
3s_rnds_client-0.1.4-py3-none-any.whl -
Subject digest:
1e32a5130ce9f9f24b3ce247db4d52c1db45633a49b38349e44b4e611f84cd3d - Sigstore transparency entry: 1349486777
- Sigstore integration time:
-
Permalink:
3S-Saude/3s-rnds-client@3a82f61a4bb15fdcce6727f61b4220827576c15c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/3S-Saude
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@3a82f61a4bb15fdcce6727f61b4220827576c15c -
Trigger Event:
pull_request
-
Statement type: