This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user