This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao;
|
||||
|
||||
use App\Models\Imunizacao\RegistroAtualizacao;
|
||||
use App\Models\Imunizacao\RegistroAplicacao;
|
||||
use App\Enums\Cadastro\Vacina as EnumVacina;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RegistroVacinacaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class CarteiraVacinacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'Carteira Nacional de Vacinação Digital';
|
||||
private const TEMPLATE = 'imunizacao.carteira-vacinacao';
|
||||
private const VACINAS_COVID = [
|
||||
EnumVacina::COVID_19_ASTRAZENECA_FIOCRUZ,
|
||||
EnumVacina::COVID_19_SINOVAC_BUTANTAN,
|
||||
EnumVacina::COVID_19_PFIZER,
|
||||
EnumVacina::COVID_19_JANSSEN,
|
||||
EnumVacina::COVID_19_ASTRAZENECA,
|
||||
EnumVacina::COVID_19_GAMALEYA,
|
||||
EnumVacina::COVID_19_BHARAT,
|
||||
EnumVacina::COVID_19_MODERNA_SPIKEVAX,
|
||||
EnumVacina::COVID_19_SINOVAC_CORONAVAC,
|
||||
EnumVacina::COVID_19_PFIZER_COMIRNATY_PEDIATRICA,
|
||||
EnumVacina::COVID_19_PFIZER_COMIRNATY_PEDIATRICA_MENOR_DE_5_ANOS,
|
||||
EnumVacina::COVID_19_PFIZER_COMIRNATYBIVALENTE,
|
||||
];
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$aplicacoes = RegistroAplicacao::where('paciente_id', $id)->get();
|
||||
$atualizacoes = RegistroAtualizacao::where('paciente_id', $id)->get();
|
||||
|
||||
$registrosVacinacao = collect();
|
||||
|
||||
$aplicacoes->each(function($aplicacao) use ($registrosVacinacao) {
|
||||
$registrosVacinacao->push([
|
||||
'data_registro' => Carbon::parse($aplicacao->data_aplicacao)->format('d/m/Y'),
|
||||
'vacina_id' => $aplicacao->entradaVacina->vacina_id,
|
||||
'vacina_nome' => $aplicacao->entradaVacina->vacina->nome,
|
||||
'vacina_codigo' => $aplicacao->entradaVacina->vacina->codigo,
|
||||
'lote' => $aplicacao->entradaVacina->lote,
|
||||
'dose_nome' => $aplicacao->dose->nome,
|
||||
'estrategia_nome' => $aplicacao->estrategia->nome,
|
||||
'unidade_cnes' => $aplicacao->entradaVacina->entrada->salaVacinacao->infraestrutura->unidade->cnes,
|
||||
'unidade_nome' => $aplicacao->entradaVacina->entrada->salaVacinacao->infraestrutura->unidade->nome_fantasia,
|
||||
'municipio_nome' => $aplicacao->entradaVacina->entrada->salaVacinacao->infraestrutura->endereco->logradouro->municipio->nome,
|
||||
'estado_uf' => $aplicacao->entradaVacina->entrada->salaVacinacao->infraestrutura->endereco->logradouro->municipio->estado->nome,
|
||||
]);
|
||||
});
|
||||
|
||||
$atualizacoes->each(function($atualizacao) use ($registrosVacinacao) {
|
||||
$registrosVacinacao->push([
|
||||
'data_registro' => Carbon::parse($atualizacao->data_atualizacao)->format('d/m/Y'),
|
||||
'vacina_id' => $atualizacao->vacina_id,
|
||||
'vacina_nome' => $atualizacao->vacina->nome,
|
||||
'vacina_codigo' => $atualizacao->vacina->codigo,
|
||||
'lote' => $atualizacao->lote,
|
||||
'dose_nome' => $atualizacao->dose->nome,
|
||||
'estrategia_nome' => $atualizacao->estrategia_id ? $atualizacao->estrategia->nome : 'Não Informado',
|
||||
'unidade_cnes' => $atualizacao->salaVacinacao->infraestrutura->unidade->cnes,
|
||||
'unidade_nome' => $atualizacao->salaVacinacao->infraestrutura->unidade->nome_fantasia,
|
||||
'municipio_nome' => $atualizacao->salaVacinacao->infraestrutura->endereco->logradouro->municipio->nome,
|
||||
'estado_uf' => $atualizacao->salaVacinacao->infraestrutura->endereco->logradouro->municipio->estado->nome,
|
||||
]);
|
||||
});
|
||||
|
||||
return [
|
||||
'paciente' => RegistroVacinacaoService::getPaciente($id),
|
||||
'registros_vacinacao' => $registrosVacinacao->whereNotIn('vacina_codigo', self::VACINAS_COVID),
|
||||
'vacinas_covid' => $registrosVacinacao->whereIn('vacina_codigo', self::VACINAS_COVID),
|
||||
'params' => request()->all(),
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id), 'landscape');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user