PHPackages                             rafaelfreba/cnes-dw - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. rafaelfreba/cnes-dw

ActiveLibrary[API Development](/categories/api)

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.

v1.0.2(3w ago)022MITPHPPHP ^8.1

Since May 18Pushed 3w agoCompare

[ Source](https://github.com/rafaelfreba/cnes-dw)[ Packagist](https://packagist.org/packages/rafaelfreba/cnes-dw)[ RSS](/packages/rafaelfreba-cnes-dw/feed)WikiDiscussions main Synced 1w ago

READMEChangelog (2)Dependencies (6)Versions (4)Used By (0)

CNES Data Warehouse Integration
===============================

[](#cnes-data-warehouse-integration)

[![Latest Stable Version](https://camo.githubusercontent.com/36bf3641108b4d0dd2248e1e2a1b8abfcb3d12ac9cce07d1f383bd944843d43b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f72616661656c66726562612f636e65732d64772e737667)](https://packagist.org/packages/rafaelfreba/cnes-dw)[![Total Downloads](https://camo.githubusercontent.com/2f0efee4152124e3a7893fcce337f70c48aa0cadd167ec6861c45643a541693c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f72616661656c66726562612f636e65732d64772e737667)](https://packagist.org/packages/rafaelfreba/cnes-dw)

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
------------

[](#-requisitos)

Antes de instalar o pacote, certifique-se de que sua aplicação atende aos seguintes requisitos:

- **PHP**: `^8.1`
- **Laravel**: `^10.0` ou `^11.0`
- **Driver do Banco**: Certifique-se de ter suporte a conexões `sqlsrv` configurado no seu ambiente PHP/Laravel.

---

📦 Instalação
------------

[](#-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
----------------------------------

[](#️-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`

[](#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`)

[](#2-configurar-o-banco-de-dados-configdatabasephp)

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,
    ],
],
```

---

🔧 Publicando Arquivos para Customização
---------------------------------------

[](#-publicando-arquivos-para-customização)

Para customizar o Controller, o Model ou as Rotas sem mexer nos arquivos do `vendor`, publique os stubs do pacote:

```
php artisan vendor:publish --tag=cnes-dw
```

Isso copiará os seguintes arquivos para o seu projeto:

Arquivo publicadoDestino no projeto`CnesEstabelecimentoController.php``app/Http/Controllers/CnesEstabelecimentoController.php``CnesEstabelecimento.php``app/Models/CnesEstabelecimento.php``cnes-dw-routes.php``routes/dw.php`> **Importante:** Após publicar, adicione a importação das rotas no seu `routes/web.php`:
>
> ```
> require base_path('routes/dw.php');
> ```
>
>
>
> O pacote detecta automaticamente a presença do `routes/dw.php` e **desativa** suas rotas internas, evitando conflitos.

---

🛠️ Como Usar
------------

[](#️-como-usar)

O pacote disponibiliza rotas automáticas, controllers prontos e métodos encapsulados no Model para serem consumidos diretamente.

### 🛣️ Rotas Disponíveis

[](#️-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

[](#️-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 CnesEstabelecimentoCollection já paginada com 15 itens por página, filtrada pelo ano atual)
$collection = CnesEstabelecimento::buscaEstabelecimentosPorMunicipio('Cuiabá');
```

---

🗂️ Estrutura do Retorno (API Resource)
--------------------------------------

[](#️-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 DWCampo retornado no JSONDescriçã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
---------

[](#-licença)

Este pacote é de uso interno e exclusivo. Todos os direitos reservados à SES-MT.

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance95

Actively maintained with recent releases

Popularity9

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

3

Last Release

21d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b84ff062da9e0db8a44a675ac4f1ba6c02e1343ad4d4ad363b5a12adebcdb795?d=identicon)[rafaelfreba](/maintainers/rafaelfreba)

---

Top Contributors

[![rafaelfreba](https://avatars.githubusercontent.com/u/63548438?v=4)](https://github.com/rafaelfreba "rafaelfreba (4 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/rafaelfreba-cnes-dw/health.svg)

```
[![Health](https://phpackages.com/badges/rafaelfreba-cnes-dw/health.svg)](https://phpackages.com/packages/rafaelfreba-cnes-dw)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[api-platform/laravel

API Platform support for Laravel

59156.3k10](/packages/api-platform-laravel)[simplestats-io/laravel-client

Analytics for Laravel. Track visitors, registrations, and payments. Discover which channels actually drive revenue, not just traffic. Server-side, GDPR compliant, ad-blocker proof.

5019.3k](/packages/simplestats-io-laravel-client)[fleetbase/core-api

Core Framework and Resources for Fleetbase API

1232.2k16](/packages/fleetbase-core-api)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45344.0k1](/packages/pressbooks-pressbooks)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
