This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\AtencaoBasica\CadastroDomiciliar;
|
||||
|
||||
use App\Models\Cadastro\Localizacao\Domicilio;
|
||||
use App\Services\Service;
|
||||
use App\Utils\MaskUtil;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class FichaResidenteService extends Service
|
||||
{
|
||||
public static function index($id)
|
||||
{
|
||||
|
||||
$cadastro = Domicilio::findOrFail($id);
|
||||
|
||||
return [
|
||||
'endereco' => [
|
||||
'id' => $cadastro->endereco->id ?? null,
|
||||
'logradouro_tipo_id' => $cadastro->endereco->logradouro->tipo->id ?? null,
|
||||
'logradouro_tipo' => $cadastro->endereco->logradouro->tipo->descricao ?? null,
|
||||
'bairro_id' => $cadastro->endereco->logradouro->bairro->id ?? null,
|
||||
'logradouro_cep' => $cadastro ? MaskUtil::getCepMasked($cadastro->endereco->logradouro->cep) : null,
|
||||
'loteamento' => $cadastro->endereco->loteamento ?? null,
|
||||
'complemento' => $cadastro->endereco->complemento ?? null,
|
||||
'referencia' => $cadastro->endereco->referencia ?? null,
|
||||
'latitude' => $cadastro->endereco->latitude ?? null,
|
||||
'longitude' => $cadastro->endereco->longitude ?? null,
|
||||
'logradouro' => $cadastro ? [
|
||||
'municipio' => [
|
||||
'estado' => [
|
||||
'uf' => $cadastro->endereco->logradouro->municipio->estado->uf ?? null,
|
||||
],
|
||||
'nome' => $cadastro->endereco->logradouro->municipio->nome ?? null,
|
||||
],
|
||||
'bairro' => [
|
||||
'nome' => $cadastro->endereco->logradouro->bairro->nome ?? null,
|
||||
],
|
||||
'tipo' => [
|
||||
'descricao' => $cadastro->endereco->logradouro->tipo->descricao ?? null,
|
||||
],
|
||||
'nome' => $cadastro->endereco->logradouro->nome ?? null,
|
||||
'id' => $cadastro->endereco->logradouro->id ?? null,
|
||||
'cep' => $cadastro ? MaskUtil::getCepMasked($cadastro->endereco->logradouro->cep) : null,
|
||||
] : null,
|
||||
'numero' => $cadastro->endereco->numero ?? null,
|
||||
'sem_numero' => $cadastro->endereco->sem_numero ?? null,
|
||||
'latitude' => $cadastro->endereco->latitude ?? null,
|
||||
'longitude' => $cadastro->endereco->longitude ?? null,
|
||||
],
|
||||
'residentes' => $cadastro ? self::getResidentes($cadastro->id) : [],
|
||||
];
|
||||
}
|
||||
|
||||
public static function getResidentes($id)
|
||||
{
|
||||
return DB::table('cadastro_cidadao')
|
||||
->select([
|
||||
'cadastro_cidadao.id AS id',
|
||||
'cadastro_cidadao.nome AS nome',
|
||||
'cadastro_cidadao.nome_social AS nome_social',
|
||||
'cadastro_cidadao.cns',
|
||||
'atencao_basica_cadastro_parentesco_responsavel.descricao AS parentesco',
|
||||
DB::raw('
|
||||
(
|
||||
CASE WHEN cadastro_cidadao.nome_mae IS NULL THEN
|
||||
"Não informado"
|
||||
ELSE
|
||||
cadastro_cidadao.nome_mae
|
||||
END
|
||||
) AS nome_mae'
|
||||
),
|
||||
DB::raw('LPAD(cadastro_paciente.prontuario,7,0) AS prontuario'),
|
||||
DB::raw('IF (cadastro_cidadao.data_nascimento IS NULL, "Não informada", DATE_FORMAT(cadastro_cidadao.data_nascimento, "%d/%m/%Y")) AS data_nascimento'),
|
||||
DB::raw('COALESCE(atencao_basica_cadastro_parentesco_responsavel.descricao, "-") AS parentesco'),
|
||||
])
|
||||
->join('cadastro_paciente', 'cadastro_paciente.cidadao_id', 'cadastro_cidadao.id')
|
||||
->leftJoin('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'cadastro_paciente.id')
|
||||
->leftJoin('atencao_basica_cadastro_parentesco_responsavel', 'atencao_basica_cadastro_parentesco_responsavel.id', 'atencao_basica_cadastro_individual.parentesco_responsavel_id')
|
||||
->where('cadastro_cidadao.domicilio_id', $id)
|
||||
->whereNotExists(function ($query) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('cadastro_obito')
|
||||
->whereColumn('cadastro_obito.cidadao_id', 'cadastro_cidadao.id');
|
||||
})
|
||||
->get();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user