init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
<?php
namespace App\Services\WebService\Ambulatorio\ConectaSus;
use App\Exceptions\WebService\Ambulatorio\ConectaSus\PacienteNotFoundException;
use App\Models\Cadastro\SujeitoAtencao\Cidadao;
use App\Services\Service;
use Illuminate\Support\Facades\DB;
use Carbon\Carbon;
class PacienteService extends Service
{
public static function index()
{
return DB::table('cadastro_cidadao')
->leftJoin('cadastro_cidadao_telefone', function ($join) {
$join->on('cadastro_cidadao_telefone.cidadao_id', '=', 'cadastro_cidadao.id')
->where('cadastro_cidadao_telefone.principal', 1);
})
->leftJoin('cadastro_sexo', 'cadastro_sexo.id', 'cadastro_cidadao.sexo_id')
->leftJoin('cadastro_nacionalidade', 'cadastro_nacionalidade.id', 'cadastro_cidadao.nacionalidade_id')
->leftJoin('cadastro_raca_cor', 'cadastro_raca_cor.id', 'cadastro_cidadao.raca_cor_id')
->join('cadastro_paciente', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id')
->leftJoin('cadastro_domicilio', 'cadastro_domicilio.id', 'cadastro_cidadao.domicilio_id')
->leftJoin('cadastro_endereco', 'cadastro_endereco.id', 'cadastro_domicilio.endereco_id')
->leftJoin('cadastro_logradouro', 'cadastro_logradouro.id', 'cadastro_endereco.logradouro_id')
->leftJoin('cadastro_logradouro_tipo', 'cadastro_logradouro_tipo.id', 'cadastro_logradouro.tipo_id')
->leftJoin('cadastro_bairro', 'cadastro_bairro.id', 'cadastro_logradouro.bairro_id')
->whereNull('cadastro_cidadao.deleted_at')
->select([
'cadastro_cidadao.cidadao_id',
'cadastro_paciente.id as paciente_id',
'cadastro_cidadao.nome AS name',
'cadastro_cidadao.cns',
'cadastro_cidadao.cpf',
'cadastro_cidadao.data_nascimento AS birthdate',
DB::raw("COALESCE(cadastro_cidadao_telefone.numero, '-') AS phone"),
'cadastro_sexo.descricao AS sex',
DB::raw("COALESCE(cadastro_cidadao.nome_mae, '-') AS motherName"),
DB::raw("COALESCE(cadastro_nacionalidade.descricao, '-') AS nationality"),
DB::raw("COALESCE(cadastro_raca_cor.descricao, '-') AS race"),
'cadastro_logradouro_tipo.descricao as type',
'cadastro_logradouro.nome as street',
'cadastro_endereco.numero as number',
'cadastro_bairro.nome as neighborhood',
'cadastro_logradouro.cep as zipCode'
])
->distinct()
->orderBy('cadastro_cidadao.nome')
->get();
}
public static function show($idPaciente)
{
$paciente = self::getPacienteModel($idPaciente);
return (object) [
'cidadao_id' => $paciente->cidadao_id,
'paciente_id' => $paciente->paciente->id,
'name' => $paciente->nome,
'cns' => $paciente->cns,
'cpf' => $paciente->cpf,
'birthdate' => Carbon::parse($paciente->data_nascimento)->format('Y/m/d'),
'phone' => $paciente->numero ?? '-',
'sex' => $paciente->sexo->descricao,
'motherName' => $paciente->nome_mae ?? '-',
'nationality' => $paciente->nacionalidade->descricao ?? '-',
'race' => $paciente->racaCor->descricao ?? '-',
'address' => [
'street' => $paciente->domicilio->endereco->logradouro->tipo_nome ?? '-',
'number' => $paciente->domicilio->endereco->numero ?? '-',
'neighborhood' => $paciente->domicilio->endereco->logradouro->bairro->nome ?? '-',
'zipCode' => $paciente->domicilio->endereco->logradouro->cep ?? '-',
]
];
}
private static function getPacienteModel($idPaciente)
{
$paciente = Cidadao::find($idPaciente);
if (is_null($paciente)) {
throw new PacienteNotFoundException();
}
return $paciente;
}
}