Files
rkm-conectasus-ci-sandbox/api/app/Services/ProntoAtendimento/Atendimento/RaatService.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

83 lines
2.6 KiB
PHP

<?php
namespace App\Services\ProntoAtendimento\Atendimento;
use App\Enums\ProntoAtendimento\Raat\CausaAcidente as CausaAcidenteEnum;
use App\Enums\ProntoAtendimento\Raat\Diagnostico as DiagnosticoEnum;
use App\Enums\ProntoAtendimento\Raat\ParteCorpoAtingida as ParteCorpoAtingidaEnum;
use App\Enums\ProntoAtendimento\Raat\RegimeTrabalho as RegimeTrabalhoEnum;
use App\Models\ProntoAtendimento\Atendimento\RaatParecerMedico;
use App\Models\ProntoAtendimento\Raat\Agente;
use App\Models\ProntoAtendimento\Raat\CausaAcidente;
use App\Models\ProntoAtendimento\Raat\ClassificacaoInicial;
use App\Models\ProntoAtendimento\Raat\Diagnostico;
use App\Models\ProntoAtendimento\Raat\ParteCorpoAtingida;
use App\Models\ProntoAtendimento\Raat\RegimeTrabalho;
use App\Models\ProntoAtendimento\Raat\TipoAcidente;
class RaatService
{
public static function get($atendimentoMedico)
{
return [
'identificacao' => self::getRaatIdentificacao($atendimentoMedico->atendimento->faa->raat),
'parecer_medico' => self::getParecerMedico($atendimentoMedico->raatParecerMedico),
];
}
public static function getOptionsParecerMedico()
{
return [
'agente' => Agente::all(),
'causa_acidente' => CausaAcidente::all(),
'classificacao_inicial' => ClassificacaoInicial::all(),
'diagnostico' => Diagnostico::all(),
'parte_corpo_atingida' => ParteCorpoAtingida::all(),
'regime_trabalho' => RegimeTrabalho::all(),
'tipo_acidente' => TipoAcidente::all(),
];
}
private static function getRaatIdentificacao($raat)
{
if (is_null($raat)) {
return null;
}
$hiddenFields = [];
if ($raat->regime_trabalho_id !== RegimeTrabalhoEnum::OUTRO) {
$hiddenFields[] ='regime_trabalho_outro';
}
return $raat->makeHidden($hiddenFields);
}
private static function getParecerMedico($parecerMedico)
{
if (is_null($parecerMedico)) {
return null;
}
$hiddenFields = [];
if (!$parecerMedico->partesCorpoAtingidas->contains('id', ParteCorpoAtingidaEnum::OUTROS)) {
$hiddenFields[] = 'parte_corpo_atingida_outras';
}
if (!$parecerMedico->diagnosticos->contains('id', DiagnosticoEnum::OUTROS)) {
$hiddenFields[] = 'diagnostico_outros';
}
return $parecerMedico
->with('causasAcidente', 'diagnosticos', 'partesCorpoAtingidas')
->get()
->makeHidden($hiddenFields);
}
}