Files
rkm-conectasus-ci-sandbox/api/app/Services/AtencaoBasica/AtividadeColetiva/FichaAtividadeColetivaService.php
Antonio Lopes dos Santos afec302c3e
All checks were successful
build-api-image / build (push) Successful in 51s
init commit
2026-08-04 16:52:02 -03:00

96 lines
5.2 KiB
PHP

<?php
namespace App\Services\AtencaoBasica\AtividadeColetiva;
use App\Models\AtencaoBasica\AtividadeColetiva\AtividadeColetiva;
use App\Models\AtencaoBasica\AtividadeColetiva\AtividadeTipo;
use App\Models\AtencaoBasica\AtividadeColetiva\Participante;
use App\Models\AtencaoBasica\AtividadeColetiva\Profissional;
use App\Models\AtencaoBasica\AtividadeColetiva\Pse;
use App\Models\AtencaoBasica\AtividadeColetiva\PublicoAlvo;
use App\Models\AtencaoBasica\AtividadeColetiva\ReuniaoTema;
use App\Models\AtencaoBasica\AtividadeColetiva\SaudePratica;
use App\Models\AtencaoBasica\AtividadeColetiva\SaudeTema;
use App\Models\AtencaoBasica\AtividadeColetiva\Turno;
use App\Models\Cadastro\SujeitoAtencao\Paciente;
use App\Models\Intranet\Cliente;
use App\Models\Sigtap\Ocupacao;
use App\Services\Service;
use App\Utils\MaskUtil;
use Carbon\Carbon;
use Illuminate\Support\Str;
class FichaAtividadeColetivaService extends Service
{
public static function index($id)
{
$cadastro = AtividadeColetiva::where('id', $id)-> first();
return [
'form' => [
'data_atual' => Carbon::now()->format('d/m/Y'),
],
'turnos' => Turno::orderBy('id')->get(),
'atividade_tipos' => AtividadeTipo::orderBy('id')->get(),
'reuniao_temas' => ReuniaoTema::orderBy('id')->get(),
'publico_alvo' => PublicoAlvo::orderBy('id')->get(),
'saude_temas' => SaudeTema::orderBy('id')->get(),
'saude_pratica' => SaudePratica::orderBy('id')->get(),
'pse' => Pse::orderBy('id')->get(),
'pse_id' => $cadastro->pse_id ?? null,
'cadastro' => [
'usuario' => [
'id' => $cadastro->usuario->id ?? null,
'cidadao_nome' => $cadastro->usuario->cidadao->nome ?? null,
'cns' => $cadastro->usuario->cidadao->cns ? MaskUtil::getCnsMasked($cadastro->usuario->cidadao->cns) : 'NÃO INFORMADO',
'cbo' => Ocupacao::findOrFail($cadastro->usuario_ocupacao_id)->codigo,
'cnes' => $cadastro->equipe->unidade->cnes ?? null,
],
'total_participantes' => $cadastro->total_participantes ?? null,
'avaliacoes_alteradas' => $cadastro->avaliacoes_alteradas ?? null,
'inep' => $cadastro->inep,
'cnes' => $cadastro->cnes,
'local_atividade' => $cadastro->local_atividade,
'equipe_cnes' => $cadastro->equipe->unidade->cnes ?? null,
'numero_ine' => $cadastro->equipe->area->numero_ine ?? null,
'equipe_id' => $cadastro->equipe_id ?? null,
'ocupacao_id' => $cadastro->usuario_ocupacao_id ?? null,
'data_usuario_responsavel' => Carbon::parse($cadastro->data_usuario_responsavel)->format('d/m/Y'),
'turno_id' => $cadastro->turno_id ?? null,
'atividade_tipo_id' => $cadastro->atividade_tipo_id ?? null,
'reuniao_temas' => isset($cadastro->reuniaoTemas) ? $cadastro->reuniaoTemas->pluck('id') : [],
'publico_alvo' => isset($cadastro->publicoAlvo) ? $cadastro->publicoAlvo->pluck('id') : [],
'saude_temas' => isset($cadastro->saudeTemas) ? $cadastro->saudeTemas->pluck('id') : [],
'saude_pratica' => isset($cadastro->saudePratica) ? $cadastro->saudePratica->pluck('id') : [],
'codigo_sigtap' => $cadastro->procedimentoColetivo->codigo_sigtap ?? null,
],
'profissional' => [
'cns' => $cadastro->usuario->cidadao->cns ? MaskUtil::getCnsMasked($cadastro->usuario->cidadao->cns) : 'NÃO INFORMADO',
'cbo' => Ocupacao::findOrFail($cadastro->usuario_ocupacao_id)->codigo,
],
'profissionais' => Profissional::where('atividade_coletiva_id', $cadastro->id)
->get()
->map(fn ($tipo) => [
'cns' => $tipo->usuario->cidadao->cns ? MaskUtil::getCnsMasked($tipo->usuario->cidadao->cns) : 'NÃO INFORMADO',
'cbo' => Ocupacao::findOrFail($tipo->usuario_ocupacao_id)->codigo,
]),
'participantes' => Participante::where('atividade_coletiva_id', $cadastro->id)
->get()
->map(fn ($tipo) => [
'id' => $tipo->paciente_id,
'nome' => $tipo->paciente->cidadao->nome,
'nome_social' => $tipo->paciente->cidadao->nome_social,
'cns' => $tipo->paciente->cidadao->cns ? MaskUtil::getCnsMasked($tipo->paciente->cidadao->cns) : 'NÃO INFORMADO',
'data_nascimento' => $tipo->paciente->cidadao->data_nascimento ? (new Carbon($tipo->paciente->cidadao->data_nascimento))->format('d/m/Y') : null,
'sexo' => $tipo->paciente->cidadao->sexo_id,
'avaliacao_alterada' => $tipo->avaliacao_alterada ?? false,
'peso' => $tipo->peso,
'altura' => $tipo->altura,
'parou_fumar' => $tipo->parou_de_fumar ?? false,
'abandonou_grupo' => $tipo->abandonou_grupo ?? false
]),
];
}
}