This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Regulacao\FilaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class FilaController extends Controller
|
||||
{
|
||||
private const TITLE = 'FILA';
|
||||
private const TEMPLATE = 'regulacao.fila';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return FilaService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate(), 'landscape');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Regulacao\Solicitacao;
|
||||
use App\Services\Regulacao\FilaService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class HistoricoMovimentacaoSolicitacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'HISTÓRICO DE MOVIMENTAÇÕES';
|
||||
private const TEMPLATE = 'regulacao.historico-movimentacao-solicitacao';
|
||||
|
||||
public function __invoke($solicitacaoId)
|
||||
{
|
||||
$solicitacao = Solicitacao::findOrFail($solicitacaoId);
|
||||
|
||||
$historicoMovimentacoes = FilaService::getHistoricoMovimentacoesSolicitacao($solicitacao->id)['status'];
|
||||
|
||||
$historicoMovimentacoes->each(function ($movimentacao) {
|
||||
|
||||
if ($movimentacao->data_agendada) {
|
||||
|
||||
$movimentacao->data_agendada = (new Carbon($movimentacao->data_agendada))->format('d/m/Y');
|
||||
}
|
||||
|
||||
$movimentacao->data_hora_movimentacao = (new Carbon($movimentacao->data_hora_movimentacao))
|
||||
->format('d/m/Y H:i');
|
||||
});
|
||||
|
||||
$data = [
|
||||
'paciente' => [
|
||||
'nome' => $solicitacao->paciente->cidadao->nome,
|
||||
'prontuario' => $solicitacao->paciente->prontuario,
|
||||
'data_nascimento' => $solicitacao->paciente->cidadao->data_nascimento
|
||||
? (new Carbon($solicitacao->paciente->cidadao->data_nascimento))->format('d/m/Y')
|
||||
: null,
|
||||
],
|
||||
'historicoMovimentacoes' => $historicoMovimentacoes,
|
||||
];
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Regulacao\Solicitacao;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class PreparoController extends Controller
|
||||
{
|
||||
private const TITLE = 'PREPARO(S)';
|
||||
private const TEMPLATE = 'regulacao.preparo';
|
||||
|
||||
public function __invoke($solicitacaoId)
|
||||
{
|
||||
$solicitacao = Solicitacao::findOrFail($solicitacaoId);
|
||||
|
||||
$itens = collect();
|
||||
$prestadorRelationName = is_null($solicitacao->prestador_interno_id) ? 'prestadorExterno' : 'prestadorInterno';
|
||||
|
||||
$solicitacao->itens->each(function ($item) use ($solicitacao, $prestadorRelationName, $itens) {
|
||||
|
||||
if (!is_null(!is_null($item->exame_id))) {
|
||||
|
||||
$solicitacao->{$prestadorRelationName}->exames()
|
||||
->where('id', $item->exame_id)
|
||||
->wherePivotNotNull('observacoes')
|
||||
->get()
|
||||
->each(fn ($exame) => $itens->push([
|
||||
'descricao' => empty($exame->codigo)
|
||||
? $exame->nome
|
||||
: MaskUtil::getProcedimentoMasked($exame->codigo) . " - {$exame->nome}",
|
||||
'observacoes' => $exame->pivotPrestadorExame->observacoes,
|
||||
]));
|
||||
}
|
||||
|
||||
if (!is_null($item->procedimento_cirurgico_id)) {
|
||||
|
||||
$solicitacao->{$prestadorRelationName}->procedimentosCirurgicos()
|
||||
->where('id', $item->procedimento_cirurgico_id)
|
||||
->wherePivotNotNull('observacoes')
|
||||
->get()
|
||||
->each(fn ($procedimentoCirurgico) => $itens->push([
|
||||
'descricao' => MaskUtil::getProcedimentoMasked($procedimentoCirurgico->procedimento_codigo)
|
||||
. " - {$procedimentoCirurgico->nome}",
|
||||
'observacoes' => $procedimentoCirurgico->pivotPrestadorProcedimentoCirurgico->observacoes,
|
||||
]));
|
||||
}
|
||||
|
||||
if (!is_null($item->especialidade_id)) {
|
||||
|
||||
$solicitacao->{$prestadorRelationName}->especialidades()
|
||||
->where('id', $item->especialidade_id)
|
||||
->wherePivotNotNull('observacoes')
|
||||
->get()
|
||||
->each(fn ($especialidade) => $itens->push([
|
||||
'descricao' => "{$especialidade->ocupacao->codigo} - {$especialidade->nome}",
|
||||
'observacoes' => $especialidade->pivotPrestadorEspecialidade->observacoes,
|
||||
]));
|
||||
}
|
||||
});
|
||||
|
||||
$data = [
|
||||
'paciente' => [
|
||||
'nome' => $solicitacao->paciente->cidadao->nome,
|
||||
'prontuario' => $solicitacao->paciente->prontuario,
|
||||
'data_nascimento' => $solicitacao->paciente->cidadao->data_nascimento
|
||||
? (new Carbon($solicitacao->paciente->cidadao->data_nascimento))->format('d/m/Y')
|
||||
: null,
|
||||
],
|
||||
'itens' => $itens->sortBy('descricao')->values(),
|
||||
];
|
||||
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Regulacao\RelatorioSolicitacaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class RelatorioSolicitacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE SOLICITAÇÕES';
|
||||
private const TEMPLATE = 'regulacao.relatorio-solicitacao';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return RelatorioSolicitacaoService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate(), 'landscape');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Enums\Parametrizacao\Exame\Tipo;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Regulacao\Parametrizacao;
|
||||
use App\Models\Regulacao\Solicitacao;
|
||||
use App\Utils\Exports\PdfCupom;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class SolicitacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'SOLICITAÇÃO';
|
||||
private const TEMPLATE = 'regulacao.solicitacao';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$solicitacao = Solicitacao::findOrFail($id);
|
||||
$parametrizacao = Parametrizacao::first();
|
||||
|
||||
$itensExamesLaboratoriais = $solicitacao->itens()
|
||||
->whereHas('exame', fn ($q) => $q->where('tipo_id', Tipo::LABORATORIAL))
|
||||
->get();
|
||||
|
||||
$exameImagem = $solicitacao->itens()
|
||||
->whereHas('exame', fn ($q) => $q->where('tipo_id', Tipo::IMAGEM))
|
||||
->first()->exame ?? null;
|
||||
|
||||
$procedimentoCirurgico = $solicitacao->itens()
|
||||
->whereNotNull('procedimento_cirurgico_id')
|
||||
->first()->procedimentoCirurgico ?? null;
|
||||
|
||||
$especialidade = $solicitacao->itens()->whereNotNull('especialidade_id')->first()->especialidade ?? null;
|
||||
|
||||
return [
|
||||
'solicitou' => Str::ucfirst($solicitacao->created_at->translatedFormat('l, d \de F \de Y, \à\s H:i:s')),
|
||||
'data_solicitacao' => $solicitacao->data->format('d/m/Y'),
|
||||
'paciente' => [
|
||||
'nome' => $solicitacao->paciente->cidadao->nome,
|
||||
'nome_social' => $solicitacao->paciente->cidadao->nome_social,
|
||||
'protocolo_cross' => $solicitacao->paciente->protocolo_cross ?? null,
|
||||
'prontuario' => $solicitacao->paciente->prontuario,
|
||||
'data_nascimento' => $solicitacao->paciente->cidadao->data_nascimento
|
||||
? (new Carbon($solicitacao->paciente->cidadao->data_nascimento))->format('d/m/Y')
|
||||
: null,
|
||||
],
|
||||
'peso' => str_replace('.', ',', $solicitacao->peso ?? '') . (is_null($solicitacao->peso) ? '' : ' kg'),
|
||||
'altura' => str_replace('.', ',', $solicitacao->altura ?? '') . (is_null($solicitacao->altura) ? '' : ' cm'),
|
||||
'hipoteseDiagnosticaJustificativa' => $solicitacao->hipotese_diagnostica_justificativa,
|
||||
'solicitante' => [
|
||||
'usuario' => $solicitacao->usuarioSolicitante->cidadao->nome,
|
||||
'unidade' => $solicitacao->infraestruturaSolicitante->unidade->nome_fantasia,
|
||||
'infraestrutura' => $solicitacao->infraestruturaSolicitante->nome,
|
||||
],
|
||||
'examesLaboratoriais' => $itensExamesLaboratoriais->isNotEmpty()
|
||||
? $itensExamesLaboratoriais->map(fn ($i) => (empty($i->exame->codigo)
|
||||
? ''
|
||||
: MaskUtil::getProcedimentoMasked($i->exame->codigo) . ' - '
|
||||
) . $i->exame->nome)->sort()->values()
|
||||
: collect(),
|
||||
'exameImagem' => $exameImagem
|
||||
? (empty($exameImagem->codigo)
|
||||
? ''
|
||||
: MaskUtil::getProcedimentoMasked($exameImagem->codigo) . ' - '
|
||||
) . $exameImagem->nome
|
||||
: null,
|
||||
'procedimentoCirurgico' => $procedimentoCirurgico
|
||||
? (MaskUtil::getProcedimentoMasked($procedimentoCirurgico->procedimento_codigo)
|
||||
. " - {$procedimentoCirurgico->nome}")
|
||||
: null,
|
||||
'especialidade' => $especialidade
|
||||
? "{$especialidade->ocupacao->codigo} - {$especialidade->nome}"
|
||||
: null,
|
||||
'atendente' => $solicitacao->createdLotacao()->withTrashed()->first()->usuario->cidadao->nome,
|
||||
'mensagemProtocoloSolicitacao' => $parametrizacao->mensagem_protocolo_solicitacao ?? null,
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return PdfCupom::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Regulacao\SolicitacaoTentativaContato;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class TentativaContatoController extends Controller
|
||||
{
|
||||
private const TITLE = 'TENTATIVA DE CONTATO';
|
||||
private const TEMPLATE = 'regulacao.tentativa-contato';
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
$tentativaContato = SolicitacaoTentativaContato::findOrFail($id);
|
||||
$paciente = $tentativaContato->solicitacao->paciente;
|
||||
|
||||
$data = [
|
||||
'paciente' => [
|
||||
'nome' => $paciente->cidadao->nome,
|
||||
'prontuario' => $paciente->prontuario,
|
||||
'idade' => $paciente->cidadao->idadeFormatada,
|
||||
'data_nascimento' => $paciente->cidadao->data_nascimento
|
||||
? (new Carbon($paciente->cidadao->data_nascimento))->format('d/m/Y')
|
||||
: null,
|
||||
],
|
||||
'data' => $tentativaContato->data->format('d/m/Y'),
|
||||
'usuarioNome' => $tentativaContato->usuario->cidadao->nome,
|
||||
'detalhes' => $tentativaContato->detalhes,
|
||||
];
|
||||
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Regulacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Regulacao\SolicitacaoTentativaContato;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class TentativaContatoSolicitacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'TENTATIVA DE CONTATO';
|
||||
private const TEMPLATE = 'regulacao.tentativa-contato-solicitacao';
|
||||
|
||||
public function __invoke($solicitacaoId)
|
||||
{
|
||||
$tentativasContato = SolicitacaoTentativaContato::where('solicitacao_id', $solicitacaoId)->get();
|
||||
$paciente = $tentativasContato->first()->solicitacao->paciente;
|
||||
|
||||
$data = [
|
||||
'paciente' => [
|
||||
'nome' => $paciente->cidadao->nome,
|
||||
'prontuario' => $paciente->prontuario,
|
||||
'idade' => $paciente->cidadao->idadeFormatada,
|
||||
'data_nascimento' => $paciente->cidadao->data_nascimento
|
||||
? (new Carbon($paciente->cidadao->data_nascimento))->format('d/m/Y')
|
||||
: null,
|
||||
],
|
||||
'tentativasContato' => $tentativasContato->map(fn ($tentativaContato) => [
|
||||
'data' => $tentativaContato->data->format('d/m/Y'),
|
||||
'usuario_nome' => $tentativaContato->usuario->cidadao->nome,
|
||||
'detalhes' => $tentativaContato->detalhes,
|
||||
])
|
||||
];
|
||||
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user