91 lines
4.5 KiB
PHP
91 lines
4.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Impressao\Ambulatorio;
|
|
|
|
use App\Enums\Cadastro\SujeitoAtencao\RacaCor;
|
|
use App\Enums\Sigtap\Procedimento;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Ambulatorio\Atendimento;
|
|
use App\Utils\Exports\Pdf1;
|
|
use App\Utils\MaskUtil;
|
|
use Carbon\Carbon;
|
|
|
|
class RequisicaoExameHistopatologicoMamografiaController extends Controller
|
|
{
|
|
private const TITLE = 'REQUISIÇÃO DE EXAME HISTOPATOLÓGICO - MAMOGRAFIA';
|
|
private const TEMPLATE = 'ambulatorio.requisicao-exame-histopatologico-mamografia';
|
|
|
|
public function __invoke($atendimentoId)
|
|
{
|
|
$atendimento = Atendimento::findOrFail($atendimentoId);
|
|
|
|
$solicitacoesExames = collect();
|
|
|
|
$atendimento->soaps()->where('is_rascunho', false)->get()->each(function ($soap) use ($solicitacoesExames) {
|
|
|
|
$soap->solicitacoesExames->each(function ($solicitacao) use ($solicitacoesExames) {
|
|
|
|
$hasExame = $solicitacao->itens()
|
|
->whereHas('exame', fn ($q) => $q
|
|
->whereIn('codigo', [
|
|
Procedimento::EXAME_ANATOMOPATOLOGICO_DE_MAMA_BIOPSIA,
|
|
Procedimento::EXAME_ANATOMOPATOLOGICO_DE_MAMA_PECA_CIRURGICA,
|
|
])
|
|
)
|
|
->exists();
|
|
|
|
if ($hasExame) {
|
|
|
|
$solicitacoesExames->push([]);
|
|
}
|
|
});
|
|
});
|
|
|
|
$data = [
|
|
'requisitante' => [
|
|
'unidade' => $atendimento->createdLotacao->infraestrutura->unidade->nome_fantasia,
|
|
'cnes' => $atendimento->createdLotacao->infraestrutura->unidade->cnes,
|
|
'municipio_uf' => $atendimento->createdLotacao->infraestrutura->endereco->logradouro->municipio->nome
|
|
. " / {$atendimento->createdLotacao->infraestrutura->endereco->logradouro->municipio->estado->uf}",
|
|
'ibge' => $atendimento->createdLotacao->infraestrutura->endereco->logradouro->municipio->ibge,
|
|
],
|
|
'paciente' => [
|
|
'prontuario' => $atendimento->paciente->prontuario,
|
|
'cns' => MaskUtil::getCnsMasked($atendimento->paciente->cidadao->cns),
|
|
'cpf' => MaskUtil::getCpfMasked($atendimento->paciente->cidadao->cpf),
|
|
'sexo' => $atendimento->paciente->cidadao->sexo->descricao ?? null,
|
|
'nome' => $atendimento->paciente->cidadao->nome,
|
|
'nome_social' => $atendimento->paciente->cidadao->nome_social,
|
|
'nome_mae' => $atendimento->paciente->cidadao->nome_mae,
|
|
'rg' => [
|
|
'numero' => $atendimento->paciente->cidadao->carteiraIdentidade->numero ?? null,
|
|
'orgao_emissor' => $atendimento->paciente->cidadao->carteiraIdentidade->orgao_emissor ?? null,
|
|
'uf' => $atendimento->paciente->cidadao->carteiraIdentidade->estado->uf ?? null,
|
|
],
|
|
'data_nascimento' => is_null($atendimento->paciente->cidadao->data_nascimento)
|
|
? null
|
|
: (new Carbon($atendimento->paciente->cidadao->data_nascimento))->format('d/m/Y'),
|
|
'idade' => $atendimento->paciente->cidadao->idade_formatada,
|
|
'raca_cor' => is_null($atendimento->paciente->cidadao->raca_cor_id)
|
|
? null
|
|
: ($atendimento->paciente->cidadao->racaCor->descricao . (
|
|
$atendimento->paciente->cidadao->raca_cor_id === RacaCor::INDIGENA
|
|
&& !is_null($atendimento->paciente->cidadao->etnia_indigena_id)
|
|
? " ({$atendimento->paciente->cidadao->etniaIndigena->descricao})"
|
|
: ''
|
|
)),
|
|
'endereco' => is_null($atendimento->paciente->cidadao->domicilio_id)
|
|
? null
|
|
: $atendimento->paciente->cidadao->domicilio->endereco->completo,
|
|
'cep' => MaskUtil::getCepMasked($atendimento->paciente->cidadao->domicilio->endereco->logradouro->cep),
|
|
'ibge' => $atendimento->paciente->cidadao->domicilio->endereco->logradouro->municipio->ibge,
|
|
'telefone' => MaskUtil::getPhoneMasked($atendimento->paciente->cidadao->telefone_principal->numero ?? null),
|
|
'escolaridade' => $atendimento->paciente->cidadao->escolaridade->descricao ?? null,
|
|
],
|
|
'solicitacoes' => $solicitacoesExames,
|
|
];
|
|
|
|
return Pdf1::generate(self::TITLE, self::TEMPLATE, $data);
|
|
}
|
|
}
|