Search by

versatecnologiaoficial / cadsus-client

gitversatec

Cliente privado para autenticação e consultas CADSUS/CNS-PDQ.

Package info

github.com/VersatecnologiaOficial/cadsus-client

pkg:composer/versatecnologiaoficial/cadsus-client

Statistics

Installs: 9

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.1 2026-11-10 21:04 UTC

This package is auto-updated.

Last update: 2026-11-10 21:06:26 UTC


README

Pacote privado PHP 8.2+ para integração com CADSUS/CNS-PDQ. O núcleo não depende de Laravel, models ou banco de dados da aplicação consumidora.

Estado atual

O pacote executa autenticação HTTP/mTLS, reutiliza o JWT em cache, constrói e valida mensagens HL7, consulta pelo SoapClient e converte respostas em DTOs. Aplicações distribuídas devem fornecer implementações compartilhadas de TokenStoreInterface e LockInterface.

O desenho aprovado usa:

  • HTTP GET com mTLS para obter o JWT;
  • SoapClient como transporte das consultas;
  • SOAP 1.2 e WSDL local;
  • Authorization: jwt {access_token} no header HTTP do SOAP;
  • endpoint do WSDL sobrescrito conforme o ambiente;
  • validação TLS e hostname sempre habilitada;
  • trace desabilitado por padrão.

Instalação para desenvolvimento

composer install
composer test

A suíte usa apenas o vendor/autoload.php do próprio pacote; rode composer install na raiz do pacote antes de composer test.

Laravel

O Versatecnologia\Cadsus\CadsusClientServiceProvider é opcional. Registre-o em bootstrap/providers.php e publique a configuração:

php artisan vendor:publish --tag=cadsus-client-config

O provider também registra CadsusClient (e CadsusClientInterface) como singleton no container.

API pública

use Versatecnologia\Cadsus\CadsusClient;
use Versatecnologia\Cadsus\DTO\CadsusCredentials;
use Versatecnologia\Cadsus\DTO\CadsusSearchRequest;

$cadsus = CadsusClient::create();
$credentials = new CadsusCredentials("tenant-nao-sensivel", $certificateContents, $certificatePassword);

$result = $cadsus
    ->forCredentials($credentials)
    ->search(CadsusSearchRequest::byCpf('00000000000'));

O pacote não recebe nem persiste models locais. A aplicação é responsável por selecionar o tenant, autorizar a consulta e mapear o resultado para suas entidades.

Contrato oficial

O WSDL está em resources/contracts/wsdl; os caminhos relativos para resources/contracts/schema foram preservados. resources/contracts/manifest.php registra os hashes SHA-256 aprovados.

Para atualizar o manifesto após uma atualização intencional e revisada:

composer contract:manifest
composer test:contract

Consulte docs/contract-update.md antes de substituir qualquer artefato.

Segurança

Nunca registre token, certificado, senha, CPF, CNS, nome, nascimento, endereço ou XML SOAP integral. Não habilite trace em produção. O certificado usado na autenticação deve ser o mesmo vinculado à credencial aprovada pelo DATASUS.

Mais detalhes em docs/security.md.