versatecnologiaoficial / cadsus-client
Cliente privado para autenticação e consultas CADSUS/CNS-PDQ.
Package info
github.com/VersatecnologiaOficial/cadsus-client
pkg:composer/versatecnologiaoficial/cadsus-client
Requires
- php: ^8.2
- ext-dom: *
- ext-json: *
- ext-libxml: *
- ext-openssl: *
- ext-soap: *
- guzzlehttp/guzzle: ^7.8
- psr/log: ^2.0 || ^3.0
- psr/simple-cache: ^2.0 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^11.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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;
SoapClientcomo 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;
tracedesabilitado 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.