rafaelfreba / cnes-dw
Pacote para permitir a consulta de estabelecimentos de saúde no DW SES-MT de maneira padronizada para todo o time de desenvolvimento.
This package is not auto-updated.
Last update: 2026-05-18 14:54:49 UTC
README
Este pacote Laravel foi desenvolvido para centralizar e reutilizar a lógica de consultas a estabelecimentos do Cadastro Nacional de Estabelecimentos de Saúde (CNES) diretamente a partir de uma conexão de Data Warehouse (DW).
🚀 Requisitos
Antes de instalar o pacote, certifique-se de que sua aplicação atende aos seguintes requisitos:
- PHP:
^8.1 - Laravel:
^10.0ou^11.0 - Driver do Banco: Certifique-se de ter suporte a conexões
sqlsrvconfigurado no seu ambiente PHP/Laravel.
📦 Instalação
Você pode instalar o pacote via Composer executando o comando abaixo no terminal do seu projeto principal:
composer require rafaelfreba/cnes-dw
Nota: Graças ao recurso de Package Discovery do Laravel, o Service Provider do pacote será registrado automaticamente.
⚙️ Configuração Prévia Obrigatória
Como este pacote consome dados diretamente do seu Data Warehouse, você precisa garantir que a conexão chamada dw esteja configurada no projeto que vai utilizá-lo.
1. Adicionar variáveis ao .env
Abra o arquivo .env da sua aplicação e insira as credenciais do seu DW:
DW_CONNECTION=dw DW_HOST=127.0.0.1 DW_PORT=1433 DW_DATABASE=Datawarehouse DW_USERNAME=seu_usuario DW_PASSWORD=sua_senha
2. Configurar o banco de dados (config/database.php)
Certifique-se de que seu arquivo config/database.php possui a conexão dw mapeada na chave connections:
'connections' => [ // ... outras conexões existentes 'dw' => [ 'driver' => 'sqlsrv', 'url' => env('DW_URL'), 'host' => env('DW_HOST', 'localhost'), 'port' => env('DW_PORT', '1433'), 'database' => env('DW_DATABASE', 'laravel'), 'username' => env('DW_USERNAME', 'root'), 'password' => env('DW_PASSWORD', ''), 'charset' => env('DW_CHARSET', 'utf8'), 'prefix' => '', 'prefix_indexes' => true, ], ],
🛠️ Como Usar
O pacote disponibiliza rotas automáticas, controllers prontos e métodos encapsulados no Model para serem consumidos diretamente.
🛣️ Rotas Disponíveis
O pacote expõe nativamente a seguinte rota de API/Web para a sua aplicação:
- GET
/dw-buscar-estabelecimento-por-cnes/{cnes} - Descrição: Busca um estabelecimento pelo código CNES exato.
- Validação interna: O parâmetro
{cnes}deve ser obrigatório e conter exatamente 7 dígitos numéricos. - Nome da rota:
dw-buscar-estabelecimento-por-cnes
Exemplo de resposta (Sucesso - 200):
{
"data": {
"cnes": "1234567",
"nome": "HOSPITAL DE CLINICAS EXEMPLO",
"municipio": "SAO PAULO",
"ibge": "3550308"
}
}
Exemplo de resposta (Erro de Validação - 422):
{
"erros": {
"cnes": [
"The cnes field must be 7 digits."
]
}
}
🗄️ Utilizando o Model Diretamente
Se você preferir realizar consultas diretamente no backend de outras partes do seu código, pode importar e usar o Model CnesEstabelecimento:
use Rafaelfreba\CnesDw\Models\CnesEstabelecimento; // 1. Buscar por código CNES (Retorna CnesEstabelecimentoResource ou lança ModelNotFoundException) $estabelecimento = CnesEstabelecimento::buscaEstabelecimentoPorCnes('1234567'); // 2. Buscar por parte do Nome (Usa SQL LIKE - Retorna CnesEstabelecimentoResource ou null) $estabelecimentoPorNome = CnesEstabelecimento::buscaEstabelecimentoPorNome('Hospital Regional'); // 3. Buscar estabelecimentos de um Município (Retorna um Builder do Eloquent filtrado pelo ano atual) $queryMunicipios = CnesEstabelecimento::buscaEstabelecimentosPorMunicipio('Curitiba'); $estabelecimentos = $queryMunicipios->get(); // Ou $estabelecimentos = $queryMunicipios->paginate(15)->withQueryString();
🗂️ Estrutura do Retorno (API Resource)
Todos os retornos de registros individuais deste pacote são transformados nativamente para o padrão unificado abaixo:
| Campo original no DW | Campo retornado no JSON | Descrição |
|---|---|---|
CodigoCnes |
cnes |
Identificador do código CNES |
EstabelecimentoNome |
nome |
Nome oficial do estabelecimento |
EstabelecimentoMunicipioNome |
municipio |
Nome do município do estabelecimento |
EstabelecimentoMunicipioCodigo |
ibge |
Código IBGE do município |
📄 Licença
Este pacote é de uso interno e exclusivo. Todos os direitos reservados à SES-MT.