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).
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.
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.
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.
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
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,
],
],O pacote disponibiliza rotas automáticas, controllers prontos e métodos encapsulados no Model para serem consumidos diretamente.
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."
]
}
}
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(); 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 |
Este pacote é de uso interno e exclusivo. Todos os direitos reservados à SES-MT.