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');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RegistroVacinacaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class CertidaoRegularidadeController extends Controller
|
||||
{
|
||||
private const TITLE = 'CERTIDÃO DE REGULARIDADE';
|
||||
private const TEMPLATE = 'imunizacao.certidao-regularidade';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
return [
|
||||
'paciente' => RegistroVacinacaoService::getPaciente($id),
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\DistribuicaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class DistribuicaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'DISTRIBUIÇÃO';
|
||||
private const TEMPLATE = 'imunizacao.distribuicao';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
return DistribuicaoService::getPrintData($id);
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RegistroVacinacaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class RegistroVacinacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'REGISTRO DE VACINAÇÃO';
|
||||
private const TEMPLATE = 'imunizacao.registro-vacinacao';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
return [
|
||||
'paciente' => RegistroVacinacaoService::getPaciente($id),
|
||||
'registros_aplicacao' => RegistroVacinacaoService::getRegistrosAplicacao($id),
|
||||
'registros_atualizacao' => RegistroVacinacaoService::getRegistrosAtualizacao($id),
|
||||
'registros_aprazamento' => RegistroVacinacaoService::getRegistrosAprazamento($id),
|
||||
];
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RelatorioFaltosoAprazamentoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class RelatorioFaltosoAprazamentoController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE FALTOSOS E APRAZAMENTOS';
|
||||
private const TEMPLATE = 'imunizacao.relatorio-faltoso-aprazamento';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return RelatorioFaltosoAprazamentoService::getPrintExportData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RelatorioPosicaoEstoqueService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class RelatorioPosicaoEstoqueController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE POSIÇÃO DE ESTOQUE';
|
||||
private const TEMPLATE = 'imunizacao.relatorio-posicao-estoque';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return RelatorioPosicaoEstoqueService::getPrintData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Cadastro\Localizacao\Endereco;
|
||||
use App\Models\Cadastro\SujeitoAtencao\Usuario;
|
||||
use App\Models\Imunizacao\SaidaVacina;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
use App\Utils\MaskUtil;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class BaixaController extends Controller
|
||||
{
|
||||
private const TITLE = 'BAIXA';
|
||||
private const TEMPLATE = 'imunizacao.baixa';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
$saidaVacina = SaidaVacina::findOrFail($id);
|
||||
|
||||
$resultado = collect([
|
||||
'id' => $saidaVacina->id,
|
||||
'entrada_vacina_id' => $saidaVacina->entrada_vacina_id,
|
||||
'data_saida' => Carbon::createFromFormat('Y-m-d', $saidaVacina->saida->data_saida)->format('d/m/Y'),
|
||||
'motivo' => self::getMotivos()->firstWhere('id', $saidaVacina->saida->motivo_id) ? self::getMotivos()->firstWhere('id', $saidaVacina->saida->motivo_id)->nome : '',
|
||||
'quantidade' => $saidaVacina->quantidade,
|
||||
'observacao' => $saidaVacina->saida->observacao,
|
||||
'material' => $saidaVacina->vacina->nome,
|
||||
'lote' => $saidaVacina->entradaVacinaOrigem->lote,
|
||||
'validade' => $saidaVacina->entradaVacinaOrigem->data_validade_lote->format('d/m/Y'),
|
||||
]);
|
||||
|
||||
$entradaVacina = DB::table('imunizacao_entrada_vacina')
|
||||
->select([
|
||||
'cadastro_unidade.nome_fantasia AS unidade',
|
||||
'cadastro_infraestrutura.telefone',
|
||||
'cadastro_infraestrutura.endereco_id',
|
||||
'cadastro_lotacao.usuario_id',
|
||||
DB::raw("
|
||||
CASE WHEN cadastro_infraestrutura.principal THEN
|
||||
cadastro_unidade.nome_fantasia
|
||||
ELSE
|
||||
cadastro_infraestrutura.nome
|
||||
END AS infraestrutura_nome
|
||||
"),
|
||||
])
|
||||
->join('imunizacao_entrada', 'imunizacao_entrada.id', 'imunizacao_entrada_vacina.entrada_id')
|
||||
->join('imunizacao_sala_vacinacao', 'imunizacao_sala_vacinacao.id', 'imunizacao_entrada.sala_vacinacao_id')
|
||||
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'imunizacao_sala_vacinacao.infraestrutura_id')
|
||||
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
||||
->join('cadastro_lotacao', 'cadastro_lotacao.infraestrutura_id', 'cadastro_infraestrutura.id')
|
||||
->where('imunizacao_entrada_vacina.id', $resultado['entrada_vacina_id'])
|
||||
->first();
|
||||
|
||||
$endereco = Endereco::findOrFail($entradaVacina->endereco_id)->completo;
|
||||
$usuario = Usuario::findOrFail($saidaVacina->lotacao->usuario_id)->nome;
|
||||
|
||||
$resultado['endereco'] = $endereco;
|
||||
$resultado['usuario'] = $usuario;
|
||||
|
||||
return $resultado->merge($entradaVacina);
|
||||
|
||||
}
|
||||
|
||||
private static function getMotivos()
|
||||
{
|
||||
return DB::table('imunizacao_saida_motivo')
|
||||
->select([
|
||||
'id',
|
||||
'nome',
|
||||
])
|
||||
->orderBy('nome')
|
||||
->get();
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
$data = self::getTemplate($id);
|
||||
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, [
|
||||
'data_saida' => $data['data_saida'],
|
||||
'motivo' => $data['motivo'],
|
||||
'quantidade' => $data['quantidade'],
|
||||
'observacao' => $data['observacao'],
|
||||
'material' => $data['material'],
|
||||
'lote' => $data['lote'],
|
||||
'validade' => $data['validade'],
|
||||
'unidade' => $data['unidade'],
|
||||
'local_atendimento' => $data['infraestrutura_nome'],
|
||||
'telefone' => MaskUtil::getPhoneMasked($data['telefone']),
|
||||
'endereco' => $data['endereco'],
|
||||
'usuario' => $data['usuario'],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RelatorioConsolidadoAplicacaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class RelatorioConsolidadoAplicacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO CONSOLIDADO DE APLICAÇÃO';
|
||||
private const TEMPLATE = 'imunizacao.relatorio-consolidado-aplicacao';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
return RelatorioConsolidadoAplicacaoService::getPrintData();
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao\Relatorios;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RelatorioDeAplicacaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
|
||||
class RelatorioDeAplicacaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'RELATÓRIO DE APLICAÇÃO';
|
||||
private const TEMPLATE = 'imunizacao.relatorio-de-aplicacao';
|
||||
|
||||
public static function getTemplate()
|
||||
{
|
||||
$registros = RelatorioDeAplicacaoService::search();
|
||||
$registros['filtros'] = request()->all();
|
||||
|
||||
return $registros;
|
||||
}
|
||||
|
||||
public function __invoke()
|
||||
{
|
||||
$data = self::getTemplate();
|
||||
$filtros = $data['filtros'];
|
||||
$registros = $data['registros'];
|
||||
|
||||
$tipoRegistro = isset($filtros['tipo_registro']) ? $registros[0]->registro : 'Todos';
|
||||
$salaVacinacao = isset($filtros['sala_vacinacao']) ? $registros[0]->sala : 'Todas';
|
||||
$vacina = isset($filtros['vacina']) ? $registros[0]->vacina : 'Todas';
|
||||
$dose = isset($filtros['dose']) ? $registros[0]->dose : 'Todas';
|
||||
$sexo = isset($filtros['sexo']) ? $registros[0]->sexo : 'Ambos';
|
||||
$unidade = isset($filtros['unidade']) ? $registros[0]->unidade : 'Todas';
|
||||
$area = isset($filtros['area']) ? $registros[0]->area : 'Todas';
|
||||
$microarea = isset($filtros['microarea']) ? $registros[0]->microarea : 'Todas';
|
||||
$classificacao = isset($filtros['classificacao']) ? $registros[0]->classificacao : 'Todas';
|
||||
$prontuario = isset($filtros['prontuario']) ? $registros[0]->prontuario : 'Todos';
|
||||
$periodo = $filtros['periodo'];
|
||||
|
||||
$faixaEtariaInicial = $filtros['faixa_etaria']['inicial'];
|
||||
$faixaEtariaFinal = $filtros['faixa_etaria']['final'];
|
||||
|
||||
$faixaEtariaInicialAnos = $faixaEtariaInicial['anos'] ?? 'Não informado';
|
||||
$faixaEtariaInicialMeses = $faixaEtariaInicial['meses'] ?? 'Não informado';
|
||||
$faixaEtariaInicialDias = $faixaEtariaInicial['dias'] ?? 'Não informado';
|
||||
|
||||
$faixaEtariaFinalAnos = $faixaEtariaFinal['anos'] ?? 'Não informado';
|
||||
$faixaEtariaFinalMeses = $faixaEtariaFinal['meses'] ?? 'Não informado';
|
||||
$faixaEtariaFinalDias = $faixaEtariaInicial['dias'] ?? 'Não informado';
|
||||
|
||||
$colunas = collect(request()->selected_columns);
|
||||
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, [
|
||||
'periodo' => "{$periodo['start']} até {$periodo['end']}",
|
||||
'tipoRegistro' => $tipoRegistro,
|
||||
'salaVacinacao' => $salaVacinacao,
|
||||
'vacina' => $vacina,
|
||||
'dose' => $dose,
|
||||
'sexo' => $sexo,
|
||||
'unidade' => $unidade,
|
||||
'areaMicroarea' => "{$area}/{$microarea}",
|
||||
'classificacao' => $classificacao,
|
||||
'faixaInicialAnos' => $faixaEtariaInicialAnos,
|
||||
'faixaInicialMeses' => $faixaEtariaInicialMeses,
|
||||
'faixaInicialDias' => $faixaEtariaInicialDias,
|
||||
'faixaFinalAnos' => $faixaEtariaFinalAnos,
|
||||
'faixaFinalMeses' => $faixaEtariaFinalMeses,
|
||||
'faixaFinalDias' => $faixaEtariaFinalDias,
|
||||
'prontuario' => $prontuario,
|
||||
'colunas' => $colunas,
|
||||
'items' => $registros,
|
||||
'totalizadores' => $data['totalizadores'],
|
||||
], 'landscape');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Impressao\Imunizacao;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Services\Imunizacao\RequisicaoService;
|
||||
use App\Utils\Exports\Pdf1;
|
||||
|
||||
class RequisicaoController extends Controller
|
||||
{
|
||||
private const TITLE = 'REQUISIÇÃO';
|
||||
private const TEMPLATE = 'imunizacao.requisicao';
|
||||
|
||||
public static function getTemplate($id)
|
||||
{
|
||||
return RequisicaoService::getPrintData($id);
|
||||
}
|
||||
|
||||
public function __invoke($id)
|
||||
{
|
||||
return Pdf1::generate(self::TITLE, self::TEMPLATE, self::getTemplate($id));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user