Metadata-Version: 2.4
Name: 3s-cnes-client
Version: 0.2.0
Summary: Cliente Python assíncrono para o serviço SOAP oficial do CNES.
Author: 3S Saúde
License-Expression: MIT
Project-URL: Homepage, https://github.com/3S-Saude/3s-cnes-client
Project-URL: Documentation, https://github.com/3S-Saude/3s-cnes-client#readme
Project-URL: Source, https://github.com/3S-Saude/3s-cnes-client
Project-URL: Issues, https://github.com/3S-Saude/3s-cnes-client/issues
Keywords: cnes,datasus,saude,soap,async,httpx
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Typing :: Typed
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx<1,>=0.27
Requires-Dist: zeep[async]<5,>=4.3
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: mypy>=1.10; extra == "dev"
Requires-Dist: pytest>=8; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
Requires-Dist: ruff>=0.5; extra == "dev"
Requires-Dist: twine>=5; extra == "dev"
Dynamic: license-file

# 3s-cnes-client

Cliente Python assíncrono para consultar leitos e profissionais nos serviços
SOAP públicos do CNES (Cadastro Nacional de Estabelecimentos de Saúde).

O pacote é exclusivamente assíncrono e usa `zeep[async]` para consumir os
serviços SOAP.

## Instalação

```bash
pip install 3s-cnes-client
```

## Uso

```python
import asyncio

from async_cnes import CNESClient


async def main():
    async with CNESClient() as client:
        leitos = await client.leitos("2400737")
        profissionais = await client.profissionais("2400737")

        print(leitos)
        print(profissionais)


asyncio.run(main())
```

Se preferir fechar o cliente manualmente:

```python
from async_cnes import CNESClient

client = CNESClient()

try:
    leitos = await client.leitos("2400737")
finally:
    await client.close()
```

## Métodos disponíveis

### `leitos(cnes: str) -> list[dict]`

Consulta os perfis de leitos vinculados ao código CNES informado.

Retorno: uma lista de dicionários contendo as informações de cada perfil de
leito.

```json
[
  {
    "codigo": "96",
    "descricao": "SUPORTE VENTILATORIO PULMONAR",
    "dataAtualizacao": "2026-05-18T00:00:00",
    "quantidadeLeito": 4,
    "quantidadeLeitoSUS": 4
  },
  {
    "codigo": "02",
    "descricao": "CARDIOLOGIA",
    "dataAtualizacao": "2026-05-18T00:00:00",
    "quantidadeLeito": 6,
    "quantidadeLeitoSUS": 0
  }
]
```

### `profissionais(cnes: str) -> list[dict]`

Consulta os profissionais vinculados ao código CNES informado.

Retorno: uma lista de dicionários contendo o CPF e o CNS de cada profissional
ligado ao CNES.

```json
[
  {
    "CNS": "709809023050097",
    "CPF": "413******00"
  },
  {
    "CNS": "708408234337161",
    "CPF": "050******35"
  },
  {
    "CNS": "704102842163350",
    "CPF": "085******52"
  },
  {
    "CNS": "700509551692756",
    "CPF": "116******74"
  }
]
```

## Desenvolvimento

```bash
python -m pip install -e ".[dev]"
ruff check .
mypy src
pytest
python -m build
```
