This commit is contained in:
@@ -0,0 +1,573 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\ProntoAtendimento;
|
||||
|
||||
use App\Enums\Cadastro\SujeitoAtencao\FatorRisco as EnumFatorRisco;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Geral\GlasgowInterpretacaoResultado;
|
||||
use App\Models\ProntoAtendimento\Atendimento\Atendimento;
|
||||
use App\Models\ProntoAtendimento\Atendimento\Enfermagem\Historico;
|
||||
use App\Models\ProntoAtendimento\Atendimento\Triagem\FormularioDorToracica;
|
||||
use App\Models\ProntoAtendimento\Atendimento\Triagem\OrigemDorToracica;
|
||||
use App\Models\ProntoAtendimento\Atendimento\Triagem\RelacionadoFormularioDorToracica;
|
||||
use App\Utils\Exports\Pdf;
|
||||
use App\Utils\Exports\Template;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class FaaSimplificadaController extends Controller
|
||||
{
|
||||
private static $TITLE = 'FICHA DE ATENDIMENTO AMBULATORIAL - FAA ';
|
||||
private const TEMPLATE = 'pronto-atendimento.faa-simplificada';
|
||||
|
||||
public static function getTemplate($atendimentoId)
|
||||
{
|
||||
$data = self::getTemplateData($atendimentoId);
|
||||
|
||||
self::$TITLE .= $data['faa']['faa_numero'];
|
||||
|
||||
return Template::make(self::$TITLE, self::TEMPLATE)->withData($data)->getHtml();
|
||||
}
|
||||
|
||||
public static function getTemplateData($atendimentoId)
|
||||
{
|
||||
$atendimento = Atendimento::findOrFail($atendimentoId);
|
||||
$faa = $atendimento->faa;
|
||||
$fila = $atendimento->fila;
|
||||
$paciente = $faa->paciente;
|
||||
$recepcao = $atendimento->recepcao;
|
||||
$unidade = $fila
|
||||
? $fila->CentroCusto->infraestrutura->unidade
|
||||
: $faa->createdCentroCusto->infraestrutura->unidade;
|
||||
$origemEntrada = $recepcao->origemEntrada;
|
||||
|
||||
$endereco = '';
|
||||
$enderecoCompleto = 'Não informado';
|
||||
$cep = 'Não informado';
|
||||
|
||||
if ($paciente->cidadao->domicilio_id) {
|
||||
|
||||
$endereco = $paciente->cidadao->domicilio->endereco;
|
||||
$enderecoCompleto = $endereco->completo;
|
||||
|
||||
$cep = MaskUtil::getCepMasked($endereco->logradouro->cep);
|
||||
}
|
||||
|
||||
$verificaMedicoFaa = $faa->where('pronto_atendimento_faa.paciente_id', $faa->paciente_id)->get();
|
||||
|
||||
if($verificaMedicoFaa->first()->desfecho_id != null){
|
||||
|
||||
$ultimasConsultas = $faa->where('pronto_atendimento_faa.paciente_id', $faa->paciente_id)
|
||||
->join('pronto_atendimento_atendimento as atendimento', 'atendimento.faa_id', 'pronto_atendimento_faa.id')
|
||||
->join('pronto_atendimento_atendimento_recepcao as recepcao', 'recepcao.atendimento_id', 'atendimento.id')
|
||||
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'pronto_atendimento_faa.lotacao_id')
|
||||
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
||||
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
||||
->join('sigtap.ocupacao', 'sigtap.ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
||||
->join('painel_senha_fila', 'painel_senha_fila.id', 'atendimento.fila_id')
|
||||
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'painel_senha_fila.centro_custo_id')
|
||||
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
||||
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
||||
->select(
|
||||
'cadastro_cidadao.nome as nome_medico',
|
||||
'sigtap.ocupacao.nome as nome_ocupacao',
|
||||
'recepcao.atendido_em',
|
||||
'cadastro_unidade.nome_fantasia'
|
||||
)
|
||||
->limit(3)
|
||||
->orderBy('atendimento.created_at', 'desc')
|
||||
->get()
|
||||
->map(fn ($consulta) => [
|
||||
'data' => $consulta->atendido_em
|
||||
? date("d/m/Y", strtotime($consulta->atendido_em)) : '',
|
||||
'horaEntrada' => $consulta->atendido_em
|
||||
? date("H:i:s", strtotime($consulta->atendido_em)) : '',
|
||||
'unidade' => $consulta->nome_fantasia,
|
||||
'medico' => $consulta->nome_medico ?? null,
|
||||
'especialidade' => $consulta->nome_ocupacao ?? null,
|
||||
]);
|
||||
|
||||
} else {
|
||||
|
||||
$ultimasConsultas = $faa->where('pronto_atendimento_faa.paciente_id', $faa->paciente_id)
|
||||
->join('pronto_atendimento_atendimento as atendimento', 'atendimento.faa_id', 'pronto_atendimento_faa.id')
|
||||
->join('pronto_atendimento_atendimento_recepcao as recepcao', 'recepcao.atendimento_id', 'atendimento.id')
|
||||
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'pronto_atendimento_faa.updated_lotacao_id')
|
||||
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
||||
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
||||
->join('sigtap.ocupacao', 'sigtap.ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
||||
->join('painel_senha_fila', 'painel_senha_fila.id', 'atendimento.fila_id')
|
||||
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'painel_senha_fila.centro_custo_id')
|
||||
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
||||
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
||||
->select(
|
||||
'cadastro_cidadao.nome as nome_medico',
|
||||
'sigtap.ocupacao.nome as nome_ocupacao',
|
||||
'recepcao.atendido_em',
|
||||
'cadastro_unidade.nome_fantasia'
|
||||
)
|
||||
->limit(3)
|
||||
->orderBy('atendimento.created_at', 'desc')
|
||||
->get()
|
||||
->map(fn ($consulta) => [
|
||||
'data' => $consulta->atendido_em
|
||||
? date("d/m/Y", strtotime($consulta->atendido_em)) : '',
|
||||
'horaEntrada' => $consulta->atendido_em
|
||||
? date("H:i:s", strtotime($consulta->atendido_em)) : '',
|
||||
'unidade' => $consulta->nome_fantasia,
|
||||
'medico' => $consulta->nome_medico ?? null,
|
||||
'especialidade' => $consulta->nome_ocupacao ?? null,
|
||||
]);
|
||||
}
|
||||
|
||||
$sinaisVitais = $atendimento->sinaisVitais()
|
||||
->orderBy('created_at')
|
||||
->limit(1)
|
||||
->get()
|
||||
->map(fn ($sinaisVitais) => [
|
||||
'pa' => $sinaisVitais->pa ?? null,
|
||||
'glicemia' => $sinaisVitais->glicemia ?? null,
|
||||
'temperatura' => $sinaisVitais->temperatura ?? null,
|
||||
'pulso' => $sinaisVitais->pulso ?? null,
|
||||
'respiracao' => $sinaisVitais->respiracao ?? null,
|
||||
'saturacao' => $sinaisVitais->saturacao ?? null,
|
||||
'intensidade_dor' => $sinaisVitais->intensidade_dor ?? null,
|
||||
'cintura' => $sinaisVitais->cintura ?? null,
|
||||
'data' => $sinaisVitais->created_at
|
||||
? date("d/m/Y", strtotime($sinaisVitais->created_at)) : null,
|
||||
'horario' => $sinaisVitais->created_at
|
||||
? date("H:i:s", strtotime($sinaisVitais->created_at)) : null,
|
||||
]);
|
||||
|
||||
$medidas = $atendimento->avaliacoesAntropometricas()->orderByDesc('created_at')->first();
|
||||
|
||||
$classificacaoRisco = $atendimento->classificacoesRisco()
|
||||
->where('atendimento_id', $atendimentoId)
|
||||
->orderBy('created_at')
|
||||
->get()
|
||||
->map(fn ($classificacaoRisco) => [
|
||||
'id' => $classificacaoRisco->id ?? null,
|
||||
'classificacaoRiscoId' => $classificacaoRisco->classificacao_risco_id ?? null,
|
||||
'nome' => $classificacaoRisco->classificacaoRisco->nome ?? 'NÃO INFORMADO',
|
||||
'dataAtendimento' => $classificacaoRisco->created_at ?? null
|
||||
? date("d/m/Y", strtotime($classificacaoRisco->created_at)): '',
|
||||
'horaAtendimento' => $classificacaoRisco->created_at ?? null
|
||||
? date("H:i:s", strtotime($classificacaoRisco->created_at)): '',
|
||||
'setor' => $classificacaoRisco->createdCentroCusto->setor->nome ?? null,
|
||||
]);
|
||||
|
||||
$fatoresRisco = collect();
|
||||
|
||||
$latestCreatedAt = DB::table('cadastro_cidadao_fator_risco')
|
||||
->where('cidadao_id', $atendimento->faa->paciente->cidadao->id)
|
||||
->max('created_at');
|
||||
|
||||
$atendimento->faa->paciente->cidadao->fatoresRisco()
|
||||
->wherePivot('created_at', $latestCreatedAt)
|
||||
->get()
|
||||
->each(function ($fatorRiscoAtual) use ($fatoresRisco, $atendimento) {
|
||||
|
||||
$dataHora = $fatorRiscoAtual->cidadaoFatorRisco->created_at->format('d/m/Y H:i:s');
|
||||
$profissional = optional(optional(optional($fatorRiscoAtual->cidadaoFatorRisco->createdLotacao()->withTrashed()->first())->usuario)->cidadao)->nome;
|
||||
$cbo = optional(optional($fatorRiscoAtual->cidadaoFatorRisco->createdLotacao()->withTrashed()->first())->ocupacao)->nome;
|
||||
$setor = optional(optional($fatorRiscoAtual->cidadaoFatorRisco->createdCentroCusto)->setor)->nome;
|
||||
|
||||
$fatorRisco = $fatoresRisco->where('data_hora', $dataHora)
|
||||
->where('profissional', $profissional)
|
||||
->where('cbo', $cbo)
|
||||
->where('setor', $setor)
|
||||
->first();
|
||||
|
||||
$fatorRiscoNome = $fatorRiscoAtual->nome;
|
||||
|
||||
if ($fatorRiscoAtual->id == EnumFatorRisco::OUTRO) {
|
||||
|
||||
$fatorRiscoNome = $fatorRiscoNome .
|
||||
' (' . $atendimento->faa->paciente->cidadao->fator_risco_outro . ')';
|
||||
}
|
||||
|
||||
if ($fatorRisco) {
|
||||
|
||||
$fatorRisco['fatores']->push($fatorRiscoNome);
|
||||
} else {
|
||||
$fatoresRisco->push([
|
||||
'data_hora' => $dataHora,
|
||||
'profissional' => $profissional,
|
||||
'cbo' => $cbo,
|
||||
'setor' => $setor,
|
||||
'fatores' => collect([$fatorRiscoNome])
|
||||
]);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$fatoresRisco->each(fn ($f) => $f['fatores'] = $f['fatores']->sort()->all());
|
||||
$fatoresRisco = $fatoresRisco->sortBy('data_hora')->all();
|
||||
|
||||
$historicoEnfermagem = Historico::where('atendimento_id', $atendimento->id)
|
||||
->orderBy('created_at')
|
||||
->get()
|
||||
->map(function ($historicoEnfermagem) use ($atendimento) {
|
||||
|
||||
return array_merge(
|
||||
self::getBaseHistoricoAreaAtendimento($historicoEnfermagem, $atendimento),
|
||||
[
|
||||
'descricao' => $historicoEnfermagem->descricao,
|
||||
]
|
||||
);
|
||||
});
|
||||
|
||||
if ($atendimento->dor_toracica == true) {
|
||||
|
||||
$formulario = FormularioDorToracica::where('atendimento_id', $atendimento->id)->get();
|
||||
|
||||
$data_sintoma = null;
|
||||
$hora_sintoma = null;
|
||||
$data_ecg_admissao = null;
|
||||
$hora_ecg_admissao = null;
|
||||
$dispneia = null;
|
||||
|
||||
foreach ($formulario as $registro) {
|
||||
$data_sintoma = $registro->data_sintoma ?? null;
|
||||
$hora_sintoma = $registro->hora_sintoma ?? null;
|
||||
$data_ecg_admissao = $registro->data_ecg_admissao ?? null;
|
||||
$hora_ecg_admissao = $registro->hora_ecg_admissao ?? null;
|
||||
$dispneia = $registro->dispneia ?? null;
|
||||
}
|
||||
|
||||
if (!empty($formulario)) {
|
||||
$formulario_id = $formulario->pluck('id');
|
||||
$formularioRelacionadoDor = RelacionadoFormularioDorToracica::whereIn('formulario_id', $formulario_id)->get();
|
||||
|
||||
$dorToracicaRelacionada = [];
|
||||
|
||||
foreach ($formularioRelacionadoDor as $registroRelacionado) {
|
||||
$dorToracicaRelacionada[] = OrigemDorToracica::where('id', $registroRelacionado->dor_toracica_id)
|
||||
->get()
|
||||
->map(function ($duracao) {
|
||||
return [
|
||||
'id' => $duracao->id,
|
||||
'nome' => $duracao->nome,
|
||||
];
|
||||
})->values();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$glasgowValor = null;
|
||||
|
||||
$atendimentosData = self::getAtendimentosData($atendimento);
|
||||
|
||||
foreach ($atendimentosData as $item) {
|
||||
if (isset($item['glasgow'])) {
|
||||
$glasgowValor = $item['glasgow'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return [
|
||||
'faa' => [
|
||||
'faa_id' => $faa->id,
|
||||
'faa_numero' => $faa->numero,
|
||||
'dor_toracica' => $atendimento->dor_toracica ?? null,
|
||||
],
|
||||
'paciente' => [
|
||||
'nome' => $paciente->cidadao->nome,
|
||||
'nomeSocial' => $paciente->cidadao->nome_social,
|
||||
'prefereNome' => $paciente->cidadao->preferencia_nome_id ?? null,
|
||||
'prontuarioUnidade' => $paciente->prontuario,
|
||||
'sexo' => $paciente->cidadao->sexo->descricao,
|
||||
'cpf' => $paciente->cidadao->cpf ?? 'Não informado',
|
||||
'cns' => $paciente->cidadao->cns ?? 'Não informado',
|
||||
'idade' => $paciente->cidadao->idade ?? [
|
||||
'anos' => 'Não informada',
|
||||
'meses' => 'Não informada',
|
||||
'dias' => 'Não informada',
|
||||
],
|
||||
'nomeMae' => $paciente->cidadao->nome_mae ?? 'Não informado',
|
||||
'endereco' => $enderecoCompleto ?? 'Não informado',
|
||||
'cep' => $cep ?? 'Não informado',
|
||||
'dataNascimento' => $paciente->cidadao->data_nascimento
|
||||
? $paciente->cidadao->data_nascimento->format('d/m/Y') : 'Não informada',
|
||||
'altura' => $medidas->altura ?? null,
|
||||
'peso' => $medidas->massa ?? null,
|
||||
],
|
||||
'telefones' => $paciente->cidadao->telefones->map(fn ($telefone) => [
|
||||
'numero' => MaskUtil::getPhoneMasked($telefone->numero),
|
||||
'obs' => $telefone->observacao,
|
||||
]),
|
||||
'recepcao' => [
|
||||
'data' => $recepcao->atendido_em
|
||||
? date("d/m/Y", strtotime($recepcao->atendido_em)) : '',
|
||||
'horaEntrada' => $recepcao->atendido_em
|
||||
? date("H:i:s", strtotime($recepcao->atendido_em)) : '',
|
||||
'recepcionista' => $recepcao->createdLotacao->usuario->cidadao->nome ?? null,
|
||||
'especialidade' => $recepcao->ocupacao->nome ?? null,
|
||||
'medicoSamu' => $recepcao->medico_samu ?? 'NÃO INFORMADO',
|
||||
'motivoAtendimento' => $recepcao->motivo_atendimento ?? 'NÃO INFORMADO',
|
||||
],
|
||||
'unidade' => [
|
||||
'nomeFantasia' => $unidade->nome_fantasia ?? '',
|
||||
],
|
||||
'senha' => $fila->senha ?? '',
|
||||
'ultimasConsultas' => $ultimasConsultas,
|
||||
'origemEntrada' => [
|
||||
'nome' => $origemEntrada->nome ?? '',
|
||||
],
|
||||
'sinaisVitais' => $sinaisVitais,
|
||||
'classificacaoRisco' => $classificacaoRisco,
|
||||
'fatoresRisco' => $fatoresRisco,
|
||||
'historicoEnfermagem' => $historicoEnfermagem,
|
||||
'observacoes' => self::getObservacoes($atendimento),
|
||||
'triagemAvaliacoesCondicoes' => self::getOutrasAvaliacoesCondicoes($atendimento),
|
||||
'formularioDorToracica' => [
|
||||
'data_sintoma' => (new Carbon($data_sintoma ?? null))->format('d/m/Y'),
|
||||
'hora_sintoma' => (new Carbon($hora_sintoma ?? null))->format('H:i:s'),
|
||||
'data_ecg_admissao' => (new Carbon($data_ecg_admissao ?? null))->format('d/m/Y'),
|
||||
'hora_ecg_admissao' => (new Carbon($hora_ecg_admissao ?? null))->format('H:i:s'),
|
||||
'dispneia' => $dispneia ?? null,
|
||||
'relacionados' => $dorToracicaRelacionada ?? null,
|
||||
],
|
||||
'glasgow' => $glasgowValor,
|
||||
];
|
||||
|
||||
}
|
||||
|
||||
private static function getAtendimentosData($atendimento)
|
||||
{
|
||||
return collect(array_merge(
|
||||
self::getAtendimentosTriagemData($atendimento->atendimentosTriagem),
|
||||
self::getAtendimentosMedicosData($atendimento->atendimentosMedico),
|
||||
self::getAtendimentosEnfermagemData($atendimento->atendimentosEnfermagem),
|
||||
self::getAtendimentosExameImagemData($atendimento->atendimentosExameImagem),
|
||||
self::getAtendimentosObservacaoData($atendimento->pacienteObservacoes),
|
||||
self::getProcedimentosFechamentoData($atendimento),
|
||||
))
|
||||
->sortBy('data_hora')
|
||||
->all();
|
||||
}
|
||||
|
||||
private static function getAtendimentosTriagemData($atendimentosTriagem)
|
||||
{
|
||||
return $atendimentosTriagem->map(function ($atendimento) {
|
||||
$escalas = $atendimento->escalasComaGlasgow->first();
|
||||
$glasgow = self::getResultadoGlasgow($escalas);
|
||||
|
||||
return [
|
||||
'data_hora' => $atendimento->created_at,
|
||||
'glasgow' => $glasgow
|
||||
];
|
||||
})->all();
|
||||
|
||||
}
|
||||
|
||||
private static function getResultadoGlasgow($escala) {
|
||||
if(!$escala) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$pontuacao = $escala->aberturaOcular->pontos
|
||||
+ $escala->respostaVerbal->pontos
|
||||
+ $escala->respostaMotora->pontos
|
||||
- $escala->reatividadePupilar->pontos;
|
||||
|
||||
if ($escala->aberturaOcular->pontos === 0
|
||||
|| $escala->respostaVerbal->pontos === 0
|
||||
|| $escala->respostaMotora->pontos === 0
|
||||
) {
|
||||
|
||||
$resultado = 'A pontuação não pode ser calculada. Um ou mais itens não foram testados.';
|
||||
}
|
||||
else {
|
||||
|
||||
$resultado = (GlasgowInterpretacaoResultado::all()->filter(function ($interpretacao) use ($pontuacao) {
|
||||
|
||||
return $pontuacao >= $interpretacao->min
|
||||
&& $pontuacao <= ($interpretacao->max ?? PHP_INT_MAX);
|
||||
})->first())->descricao;
|
||||
}
|
||||
|
||||
return [
|
||||
'ocular' => $escala->aberturaOcular->pontos,
|
||||
'verbal' => $escala->respostaVerbal->pontos,
|
||||
'motora' => $escala->respostaMotora->pontos,
|
||||
'pupilar' => $escala->reatividadePupilar->pontos * -1,
|
||||
'pontuacao' => $pontuacao,
|
||||
'resultado' => $resultado
|
||||
];
|
||||
}
|
||||
|
||||
private static function getAtendimentosMedicosData($atendimentosMedicos)
|
||||
{
|
||||
return $atendimentosMedicos->map(fn ($atendimento) => [
|
||||
'data_hora' => $atendimento->created_at,
|
||||
])->all();
|
||||
}
|
||||
|
||||
private static function getAtendimentosEnfermagemData($atendimentosEnfermagem)
|
||||
{
|
||||
|
||||
return $atendimentosEnfermagem->map(fn ($atendimento) => [
|
||||
'data_hora' => $atendimento->created_at,
|
||||
])->all();
|
||||
}
|
||||
|
||||
private static function getAtendimentosExameImagemData($atendimentosExameImagem)
|
||||
{
|
||||
return $atendimentosExameImagem->map(fn ($atendimento) => [
|
||||
'data_hora' => $atendimento->created_at,
|
||||
])->all();
|
||||
}
|
||||
|
||||
private static function getAtendimentosObservacaoData($atendimentosObservacao)
|
||||
{
|
||||
return $atendimentosObservacao->map(fn ($atendimento) => [
|
||||
'data_hora' => $atendimento->created_at,
|
||||
])->all();
|
||||
}
|
||||
|
||||
private static function getProcedimentosFechamentoData($atendimento)
|
||||
{
|
||||
$atendimentosProcedimentos = collect();
|
||||
|
||||
$atendimento->procedimentos()
|
||||
->whereNull('atendimento_medico_id')
|
||||
->whereNull('atendimento_triagem_id')
|
||||
->whereNull('atendimento_enfermagem_id')
|
||||
->whereNull('paciente_observacao_id')
|
||||
->whereNull('exame_imagem_id')
|
||||
->get()
|
||||
->each(function ($atendimentoProcedimento) use ($atendimentosProcedimentos) {
|
||||
|
||||
$realizadoEm = Carbon::create(
|
||||
$atendimentoProcedimento->realizado_em->year,
|
||||
$atendimentoProcedimento->realizado_em->month,
|
||||
$atendimentoProcedimento->realizado_em->day,
|
||||
23,
|
||||
59,
|
||||
59
|
||||
);
|
||||
|
||||
$realizadoEmFormatted = $realizadoEm->format('d/m/Y H:i:s');
|
||||
|
||||
$atendimentoProcedimentoProfissional = $atendimentosProcedimentos
|
||||
->where('lotacao_id', $atendimentoProcedimento->lotacao_id)
|
||||
->where('data_hora_formatted', $realizadoEmFormatted)
|
||||
->first();
|
||||
|
||||
if (is_null($atendimentoProcedimentoProfissional)) {
|
||||
|
||||
$atendimentoProcedimentoProfissional = collect([
|
||||
'data_hora_formatted' => $realizadoEmFormatted,
|
||||
'data_hora' => $realizadoEm,
|
||||
]);
|
||||
|
||||
$atendimentosProcedimentos->push($atendimentoProcedimentoProfissional);
|
||||
}
|
||||
});
|
||||
|
||||
return $atendimentosProcedimentos->all();
|
||||
}
|
||||
|
||||
static function getBaseHistoricoAreaAtendimento($model, $atendimento)
|
||||
{
|
||||
$result = [
|
||||
'centro_custo' => [
|
||||
'setor' => [
|
||||
'nome' => $model->createdCentroCusto->setor->nome,
|
||||
],
|
||||
],
|
||||
'lotacao' => [
|
||||
'ocupacao' => [
|
||||
'codigo' => $model->createdLotacao->ocupacao->codigo,
|
||||
'nome' => $model->createdLotacao->ocupacao->nome,
|
||||
],
|
||||
'profissional' => [
|
||||
'nome' => $model->createdLotacao->usuario->cidadao->nome,
|
||||
],
|
||||
],
|
||||
'classificacao_risco' => [
|
||||
'nome' => self::getClassificacaoRisco($atendimento, $model->created_at)['nome'] ?? null
|
||||
],
|
||||
'data_hora' => $model->created_at->format('d/m/Y H:i:s'),
|
||||
];
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
static function getOutrasAvaliacoesCondicoes($atendimento)
|
||||
{
|
||||
return $atendimento->atendimentosTriagem()->whereNotNull('outras_avaliacoes_condicoes')
|
||||
->get()
|
||||
->map(function($query) {
|
||||
return [
|
||||
'centro_custo' => [
|
||||
'setor' => [
|
||||
'nome' => $query->createdCentroCusto->setor->nome ?? null,
|
||||
],
|
||||
],
|
||||
'classificacao_risco' => [
|
||||
'nome' => $query->classificacaoRisco->classificacaoRisco->nome ?? null,
|
||||
],
|
||||
'data_hora' => $query->created_at->format('d/m/Y H:i:s'),
|
||||
'descricao' => $query->outras_avaliacoes_condicoes,
|
||||
'lotacao' => [
|
||||
'ocupacao' => [
|
||||
'nome' => $query->createdLotacao->ocupacao->nome ?? null,
|
||||
],
|
||||
'profissional' => [
|
||||
'nome' => $query->createdLotacao->usuario->cidadao->nome ?? null,
|
||||
],
|
||||
],
|
||||
];
|
||||
})
|
||||
->values();
|
||||
}
|
||||
|
||||
static function getClassificacaoRisco($atendimento, $datetime)
|
||||
{
|
||||
$classificacaoRisco = $atendimento->classificacoesRisco()
|
||||
->where('created_at', '<=', $datetime)
|
||||
->get()
|
||||
->sortByDesc('created_at')
|
||||
->first();
|
||||
|
||||
if ($classificacaoRisco == null)
|
||||
return null;
|
||||
|
||||
return [
|
||||
'id' => $classificacaoRisco->id,
|
||||
'classificacao_risco_id' => $classificacaoRisco->classificacao_risco_id,
|
||||
'nome' => $classificacaoRisco->classificacaoRisco->nome,
|
||||
];
|
||||
}
|
||||
|
||||
static function getObservacoes($atendimento)
|
||||
{
|
||||
return $atendimento->observacoes->map(function($query) {
|
||||
return [
|
||||
'dataHora' => $query->created_at->format('d/m/Y H:i:s'),
|
||||
'centroCusto' => [
|
||||
'setor' => [
|
||||
'nome' => $query->createdCentroCusto->setor->nome ?? null,
|
||||
],
|
||||
],
|
||||
'descricao' => $query->descricao,
|
||||
'lotacao' => [
|
||||
'ocupacao' => [
|
||||
'nome' => $query->createdLotacao->ocupacao->nome ?? null,
|
||||
],
|
||||
'profissional' => [
|
||||
'nome' => $query->createdLotacao->usuario->cidadao->nome ?? null,
|
||||
],
|
||||
],
|
||||
];
|
||||
})->values();
|
||||
}
|
||||
|
||||
public function __invoke($atendimentoId)
|
||||
{
|
||||
return (new Pdf)->stream(self::getTemplate($atendimentoId), self::$TITLE);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user