633 lines
24 KiB
PHP
633 lines
24 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\ProntoAtendimento\Atendimento;
|
|
|
|
use App\Enums\Administracao\Modulo;
|
|
use App\Enums\Cadastro\Estabelecimento\Servico as EstabelecimentoServico;
|
|
use App\Enums\Cadastro\SujeitoAtencao\Classificacao;
|
|
use App\Enums\PainelSenha\PrioridadeTipo as PainelSenhaPrioridade;
|
|
use App\Enums\ProntoAtendimento\Atendimento\Desfecho;
|
|
use App\Enums\ProntoAtendimento\Atendimento\OrigemEntrada as AtendimentoOrigemEntrada;
|
|
use App\Enums\ProntoAtendimento\OrigemUnidadeEncaminhamento;
|
|
use App\Enums\ProntoAtendimento\Plantao\Status as PlantaoStatus;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Requests\ProntoAtendimento\Atendimento\RecepcaoRequest;
|
|
use App\Models\Cadastro\Estabelecimento\CentroCusto;
|
|
use App\Models\Cadastro\Estabelecimento\Servico;
|
|
use App\Models\Cadastro\Parametrizacao\ParametrizacaoPermissaoUsuario;
|
|
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
|
|
use App\Models\Cadastro\SujeitoAtencao\Paciente;
|
|
use App\Models\Cadastro\SujeitoAtencao\PacienteClassificacao;
|
|
use App\Models\Cadastro\SujeitoAtencao\Sexo;
|
|
use App\Models\Cns\TermoInvalido;
|
|
use App\Models\PainelSenha\Encaminhamento;
|
|
use App\Models\PainelSenha\Fila;
|
|
use App\Models\PainelSenha\OpcaoEntrada;
|
|
use App\Models\PainelSenha\Prioridade;
|
|
use App\Models\ProntoAtendimento\Atendimento\Faa;
|
|
use App\Models\ProntoAtendimento\Atendimento\OrigemEntrada;
|
|
use App\Models\ProntoAtendimento\Plantao\Plantao;
|
|
use App\Models\ProntoAtendimento\Raat\RegimeTrabalho;
|
|
use App\Models\ProntoAtendimento\Raat\TipoAcidente;
|
|
use App\Services\Administracao\ModuloService;
|
|
use App\Services\Cadastro\SujeitoAtencao\PacienteDesconhecidoSaveService;
|
|
use App\Services\Integracao\CnsService;
|
|
use App\Services\ProntoAtendimento\Fila\FilaService;
|
|
use App\Services\ProntoAtendimento\Impressao\ImpressaoService;
|
|
use App\Services\ProntoAtendimento\PlantaoService;
|
|
use App\Utils\MaskUtil;
|
|
use Carbon\Carbon;
|
|
use Illuminate\Http\Response;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class RecepcaoController extends Controller
|
|
{
|
|
protected $modulo = 'pronto-atendimento';
|
|
protected $funcionalidade = 'atendimento-recepcao';
|
|
|
|
public function index()
|
|
{
|
|
$plantao = PlantaoService::getCurrentPlantao();
|
|
|
|
$lotacao = $this->getCurrentLotacao();
|
|
|
|
$permissaoUsuario = ParametrizacaoPermissaoUsuario::where('usuario_id', $lotacao->usuario_id)
|
|
->where('infraestrutura_id', $lotacao->infraestrutura_id)
|
|
->first();
|
|
|
|
$countUsuario = ParametrizacaoPermissaoUsuario::count();
|
|
|
|
$classificacoes = $permissaoUsuario
|
|
? PacienteClassificacao::orderBy('descricao')
|
|
->get()
|
|
->filter(function ($classificacao) use ($permissaoUsuario) {
|
|
|
|
$exibe = false;
|
|
|
|
switch ($classificacao->id) {
|
|
case Classificacao::MUNICIPE:
|
|
$exibe = $permissaoUsuario->municipe;
|
|
break;
|
|
case Classificacao::PROVISORIO:
|
|
$exibe = $permissaoUsuario->provisorio;
|
|
break;
|
|
case Classificacao::OUTRO_MUNICIPIO:
|
|
$exibe = $permissaoUsuario->outro_municipio;
|
|
break;
|
|
}
|
|
|
|
return $exibe ? [
|
|
'id' => $classificacao->id,
|
|
'descricao' => $classificacao->descricao
|
|
] : null;
|
|
})
|
|
->values()
|
|
: [];
|
|
|
|
return response()->json(
|
|
[
|
|
'additionals' => [
|
|
'plantao_id' => $plantao->id ?? null,
|
|
'plantao_faixa_etaria_id' => $plantao->faixa_etaria_id ?? null,
|
|
'classificacoes' => $classificacoes,
|
|
'is_permissao_cadastro' => $countUsuario === 0 ? true : false,
|
|
],
|
|
],
|
|
Response::HTTP_OK
|
|
);
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$this->auth(__FUNCTION__);
|
|
|
|
$now = Carbon::now();
|
|
$senha = '';
|
|
$opcaoEntradaId = null;
|
|
$pacienteIdentificado = null;
|
|
$isAtendimentoPreferencial = false;
|
|
$prioridadeId = null;
|
|
$alertFaaAberta = false;
|
|
$alertFaaEvadida = false;
|
|
$dataHoraDesfecho = null;
|
|
|
|
if (is_numeric(request()->fila_id)) {
|
|
|
|
$fila = Fila::findOrFail(request()->fila_id);
|
|
|
|
$senha = $fila->senha;
|
|
$opcaoEntradaId = $fila->opcao_entrada_id;
|
|
|
|
if ($fila->prioridade_id) {
|
|
|
|
$isAtendimentoPreferencial = true;
|
|
$prioridadeId = $fila->prioridade_id;
|
|
}
|
|
}
|
|
|
|
if (is_numeric(request()->paciente_id)) {
|
|
|
|
$faa = Faa::with('atendimentos.fila')
|
|
->where('paciente_id', request()->paciente_id)
|
|
->whereHas('atendimentos.fila', function($query) {
|
|
|
|
$query
|
|
->whereHas('centroCusto', function($query) {
|
|
$query->where(
|
|
'infraestrutura_id',
|
|
Lotacao::findOrFail(auth()->payload()->get('lotacao_id'))->infraestrutura_id
|
|
);
|
|
});
|
|
})
|
|
->where(function($query) {
|
|
$query->whereNull('desfecho_id')
|
|
->orWhere('desfecho_id', Desfecho::EVASAO);
|
|
})
|
|
->orderByDesc('id')
|
|
->first();
|
|
|
|
if ($faa) {
|
|
$setor = null;
|
|
$createdAt = null;
|
|
$procedimentos = 0;
|
|
$finalizado = false;
|
|
|
|
$faa->atendimentos->map(function($atendimento) use (&$setor, &$procedimentos, &$createdAt, &$finalizado) {
|
|
$createdAt = $atendimento->fila->created_at;
|
|
$setor = $atendimento->fila->centroCusto->setor;
|
|
$procedimentos = $atendimento->procedimentos->count();
|
|
$finalizado = $atendimento->fila->finalizado;
|
|
});
|
|
|
|
$createdAt = Carbon::parse($createdAt)->addDay()->format('Y-m-d h:i');
|
|
|
|
if ($createdAt >= Carbon::now()->format('Y-m-d h:i')) {
|
|
|
|
if($faa->desfecho_id == Desfecho::EVASAO) {
|
|
$alertFaaEvadida = true;
|
|
$dataHoraDesfecho = Carbon::parse($faa->data_hora_desfecho)->format('d/m/Y H:i');
|
|
}
|
|
|
|
elseif ($faa->desfecho_id == null || ($procedimentos > 0 && $finalizado)) {
|
|
|
|
$alertFaaAberta = true;
|
|
}
|
|
} else {
|
|
|
|
if ($faa->desfecho_id == null) {
|
|
|
|
$alertFaaAberta = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
$paciente = Paciente::findOrFail(request()->paciente_id);
|
|
$endereco = '';
|
|
|
|
if ($paciente->cidadao->domicilio_id) {
|
|
|
|
$endereco = $paciente->cidadao->domicilio->endereco;
|
|
$endereco = $endereco->completo . ' - ' . MaskUtil::getCepMasked($endereco->logradouro->cep);
|
|
}
|
|
|
|
$pacienteIdentificado = [
|
|
'prontuario' => $paciente->prontuario,
|
|
'classificacao_id' => $paciente->classificacao_id,
|
|
'cns' => $paciente->cidadao->cns,
|
|
'nome' => $paciente->cidadao->nome,
|
|
'nome_social' => $paciente->cidadao->nome_social,
|
|
'preferencia_nome_id' => $paciente->cidadao->preferencia_nome_id ?? null,
|
|
'nome_mae' => $paciente->cidadao->nome_mae ?? '',
|
|
'sexo' => [
|
|
'id' => $paciente->cidadao->sexo->id,
|
|
'descricao' => $paciente->cidadao->sexo->descricao,
|
|
],
|
|
'data_nascimento' => $paciente->cidadao->data_nascimento->format('d/m/Y'),
|
|
'idade' => $paciente->cidadao->idade,
|
|
'endereco' => $endereco,
|
|
'telefones' => $paciente->cidadao->telefones->map(fn ($telefone) => [
|
|
'id' => $telefone->id,
|
|
'numero' => MaskUtil::getPhoneMasked($telefone->numero),
|
|
'observacao' => $telefone->observacao ?? '',
|
|
'autoriza_sms' => $telefone->autoriza_sms,
|
|
'principal' => $telefone->principal,
|
|
]),
|
|
'cidadao_id' => $paciente->cidadao_id,
|
|
];
|
|
|
|
if ($paciente->cidadao->idade['anos'] >= 60) {
|
|
|
|
$isAtendimentoPreferencial = true;
|
|
$prioridadeId = PainelSenhaPrioridade::IDOSO;
|
|
}
|
|
}
|
|
|
|
$ocupacoes = collect();
|
|
|
|
Plantao::whereIn('status_id', [
|
|
PlantaoStatus::CADASTRADO,
|
|
PlantaoStatus::CONFIRMADO,
|
|
PlantaoStatus::COM_ATENDIMENTO_AGENDADO
|
|
])
|
|
->whereRaw("DATE_SUB(pronto_atendimento_plantao.inicio, INTERVAL 60 MINUTE) <= '{$now->format('Y-m-d H:i:s')}'")
|
|
->where('pronto_atendimento_plantao.fim', '>=', $now->format('Y-m-d H:i:s'))
|
|
->get()
|
|
->map(function ($plantao) use ($ocupacoes) {
|
|
|
|
if ($plantao->servico_id === EstabelecimentoServico::CONSULTA_MEDICA) {
|
|
|
|
$ocupacao = $plantao->lotacao->ocupacao;
|
|
|
|
if (!$ocupacoes->contains('id', $ocupacao->id)) {
|
|
|
|
$ocupacoes->push([
|
|
'id' => $ocupacao->id,
|
|
'codigoNome' => $ocupacao->codigo_nome,
|
|
]);
|
|
}
|
|
}
|
|
});
|
|
|
|
$lotacao = $this->getCurrentLotacao();
|
|
|
|
$permissaoUsuario = ParametrizacaoPermissaoUsuario::where('usuario_id', $lotacao->usuario_id)
|
|
->where('infraestrutura_id', $lotacao->infraestrutura_id)
|
|
->first();
|
|
|
|
$countUsuario = ParametrizacaoPermissaoUsuario::count();
|
|
|
|
$classificacoes = $permissaoUsuario
|
|
? PacienteClassificacao::orderBy('descricao')
|
|
->get()
|
|
->filter(function ($classificacao) use ($permissaoUsuario) {
|
|
|
|
$exibe = false;
|
|
|
|
switch ($classificacao->id) {
|
|
case Classificacao::MUNICIPE:
|
|
$exibe = $permissaoUsuario->municipe;
|
|
break;
|
|
case Classificacao::PROVISORIO:
|
|
$exibe = $permissaoUsuario->provisorio;
|
|
break;
|
|
case Classificacao::OUTRO_MUNICIPIO:
|
|
$exibe = $permissaoUsuario->outro_municipio;
|
|
break;
|
|
}
|
|
|
|
return $exibe ? [
|
|
'id' => $classificacao->id,
|
|
'descricao' => $classificacao->descricao
|
|
] : null;
|
|
})
|
|
->values()
|
|
: [];
|
|
|
|
return response()->json(
|
|
[
|
|
'additionals' => [
|
|
'permissoes_atualizacao_cadastro_paciente' => self::getPermissoesAtualizacaoCadastroPaciente(),
|
|
],
|
|
'data_atual' => $now->format('d/m/Y'),
|
|
'termos_invalidos' => TermoInvalido::all()->map(fn ($termo) => $termo->descricao),
|
|
'form' => [
|
|
'senha' => $senha,
|
|
'alert_faa_aberta' => $alertFaaAberta,
|
|
'setor' => $setor['nome'] ?? null,
|
|
'alert_faa_evadida' => $alertFaaEvadida,
|
|
'data_hora_desfecho' => $dataHoraDesfecho,
|
|
'is_atendimento_preferencial' => $isAtendimentoPreferencial,
|
|
'prioridades' => Prioridade::orderBy('nome')
|
|
->get()
|
|
->map(fn ($prioridade) => [
|
|
'id' => $prioridade->id,
|
|
'nome' => $prioridade->nome,
|
|
]),
|
|
'prioridade_id' => $prioridadeId,
|
|
'paciente_identificado' => $pacienteIdentificado,
|
|
'paciente_desconhecido' => [
|
|
'sexos' => Sexo::orderBy('descricao')
|
|
->get()
|
|
->map(fn ($sexo) => [
|
|
'id' => $sexo->id,
|
|
'descricao' => $sexo->descricao
|
|
]),
|
|
],
|
|
'opcoes_entrada' => OpcaoEntrada::where('modulo_id', ModuloService::getId(Modulo::PRONTO_ATENDIMENTO))
|
|
->orderBy('nome')
|
|
->where('centro_custo_id', auth()->payload()->get('centro_custo_id'))
|
|
->get()
|
|
->map(fn($opcao) => [
|
|
'id' => $opcao->id,
|
|
'nome' => $opcao->nome,
|
|
'prioridade_obrigatoria' => $opcao->prioridade_obrigatoria
|
|
]),
|
|
'opcao_entrada_id' => $opcaoEntradaId,
|
|
'origens_entrada' => OrigemEntrada::orderBy('nome')
|
|
->get()
|
|
->map(fn ($origem) => [
|
|
'id' => $origem->id,
|
|
'nome' => $origem->nome,
|
|
]),
|
|
'origem_entrada_id' => AtendimentoOrigemEntrada::ESPONTANEA,
|
|
'origens_unidade' => [
|
|
[ 'id' => OrigemUnidadeEncaminhamento::INTERNA, 'nome' => 'INTERNA' ],
|
|
[ 'id' => OrigemUnidadeEncaminhamento::EXTERNA, 'nome' => 'EXTERNA' ],
|
|
],
|
|
'origem_unidade_value' => OrigemUnidadeEncaminhamento::INTERNA,
|
|
'servicos' => Servico::orderBy('nome')
|
|
->get()
|
|
->map(fn ($servico) => [
|
|
'id' => $servico->id,
|
|
'nome' => $servico->nome,
|
|
]),
|
|
'ocupacoes' => $ocupacoes,
|
|
'centros_custo_para' => Encaminhamento::where('centro_custo_id_de', auth()->payload()->get('centro_custo_id'))
|
|
->get()
|
|
->map(fn ($encaminhamento) => [
|
|
'id' => $encaminhamento->centroCustoPara->id,
|
|
'nome' => $encaminhamento->centroCustoPara->setor->nome,
|
|
'setor_tipo_id' => $encaminhamento->centroCustoPara->setor->tipo_id
|
|
]),
|
|
'raat_data' => [
|
|
'form' => [
|
|
'raat' => [
|
|
'tipo_acidente' => TipoAcidente::orderBy('nome')
|
|
->get()
|
|
->map(fn ($tipo) => [
|
|
'id' => $tipo->id,
|
|
'nome' => $tipo->nome,
|
|
]),
|
|
'regime_trabalho' => RegimeTrabalho::orderBy('nome')
|
|
->get()
|
|
->map(fn ($tipo) => [
|
|
'id' => $tipo->id,
|
|
'nome' => $tipo->nome,
|
|
]),
|
|
]
|
|
]
|
|
],
|
|
'classificacoes' => $classificacoes,
|
|
'is_permissao_cadastro' => $countUsuario === 0 ? true : false,
|
|
],
|
|
],
|
|
Response::HTTP_OK
|
|
);
|
|
}
|
|
|
|
public function store(RecepcaoRequest $request)
|
|
{
|
|
$this->auth(__FUNCTION__);
|
|
|
|
$recepcao = null;
|
|
|
|
DB::beginTransaction();
|
|
|
|
try {
|
|
$params = $this->getParams($request);
|
|
|
|
sleep(rand(1, 3));
|
|
|
|
$faaRecente = Faa::where('paciente_id', $params['paciente'])->where('created_at', '>=', now()->subMinutes(5))->first();
|
|
|
|
if ($faaRecente) {
|
|
|
|
throw new \Exception('O paciente teve uma FAA criada a menos de 5 minutos, caso deseje criar outra tente novamente após esse tempo.');
|
|
}
|
|
|
|
$pacienteId = $this->savePaciente($params['paciente'], $params['atendido_em']);
|
|
$faa = Faa::create(['paciente_id' => $pacienteId]);
|
|
|
|
if (isset($params['raat'])) {
|
|
|
|
$this->saveRaat($faa, $params['raat']);
|
|
}
|
|
|
|
$filaId = $this->saveFila($params['fila']);
|
|
$atendimento = $faa->atendimentos()->create(['fila_id' => $filaId]);
|
|
$recepcao = $this->saveAtendimentoRecepcao($atendimento, $params);
|
|
|
|
if (isset($params['observacao'])) {
|
|
|
|
$atendimento->observacoes()->create([
|
|
'atendimento_recepcao_id' => $recepcao->id,
|
|
'descricao' => $params['observacao'],
|
|
]);
|
|
}
|
|
|
|
$this->encaminharFila($pacienteId, $filaId, $params['fila']);
|
|
|
|
DB::commit();
|
|
|
|
$recepcao->refresh();
|
|
$recepcao->impressoes = $this->getImpressoes($recepcao);
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
DB::rollBack();
|
|
return response()->json(['message' => $e->getMessage()], Response::HTTP_BAD_REQUEST);
|
|
}
|
|
|
|
return response()->json($recepcao, Response::HTTP_CREATED);
|
|
}
|
|
|
|
private function getParams($request)
|
|
{
|
|
$params = $request->all();
|
|
|
|
if (isset($params['paciente']['nome'])) {
|
|
|
|
$params['paciente']['nome'] = mb_strtoupper($params['paciente']['nome']);
|
|
}
|
|
|
|
if (isset($params['urgente_motivo'])) {
|
|
|
|
$params['urgente_motivo'] = mb_strtoupper($params['urgente_motivo']);
|
|
}
|
|
|
|
if (isset($params['medico_samu'])) {
|
|
|
|
$params['medico_samu'] = mb_strtoupper($params['medico_samu']);
|
|
}
|
|
|
|
if (isset($params['acompanhante'])) {
|
|
|
|
$params['acompanhante'] = mb_strtoupper($params['acompanhante']);
|
|
}
|
|
|
|
if (isset($params['medico_solicitante_encaminhamento'])) {
|
|
|
|
$params['medico_solicitante_encaminhamento'] = mb_strtoupper($params['medico_solicitante_encaminhamento']);
|
|
}
|
|
|
|
if (isset($params['raat']['empresa']['nome'])) {
|
|
|
|
$params['raat']['empresa']['nome'] = mb_strtoupper($params['raat']['empresa']['nome']);
|
|
}
|
|
|
|
if (isset($params['raat']['empresa']['ramo_atividade'])) {
|
|
|
|
$params['raat']['empresa']['ramo_atividade'] = mb_strtoupper($params['raat']['empresa']['ramo_atividade']);
|
|
}
|
|
|
|
if (isset($params['raat']['empresa']['endereco'])) {
|
|
|
|
$params['raat']['empresa']['endereco'] = mb_strtoupper($params['raat']['empresa']['endereco']);
|
|
}
|
|
|
|
if (isset($params['raat']['acidente']['local'])) {
|
|
|
|
$params['raat']['acidente']['local'] = mb_strtoupper($params['raat']['acidente']['local']);
|
|
}
|
|
|
|
if (isset($params['raat']['acidente']['regime_trabalho_outro'])) {
|
|
|
|
$params['raat']['acidente']['regime_trabalho_outro'] = mb_strtoupper(
|
|
$params['raat']['acidente']['regime_trabalho_outro']
|
|
);
|
|
}
|
|
|
|
return $params;
|
|
}
|
|
|
|
private function savePaciente($params, $atendidoEm)
|
|
{
|
|
if (isset($params['id'])) {
|
|
|
|
return $params['id'];
|
|
}
|
|
|
|
return (new PacienteDesconhecidoSaveService(
|
|
$atendidoEm,
|
|
$params['sexo_id'],
|
|
$params['caracteristicas_fisicas'] ?? null
|
|
))->save()->id;
|
|
}
|
|
|
|
private function saveRaat($faa, $params)
|
|
{
|
|
return $faa->raat()->create([
|
|
'empresa_nome' => $params['empresa']['nome'],
|
|
'empresa_ramo_atividade' => $params['empresa']['ramo_atividade'] ?? null,
|
|
'empresa_endereco' => $params['empresa']['endereco'] ?? null,
|
|
'empresa_telefone' => $params['empresa']['telefone'] ?? null,
|
|
'acidente_data' => $params['acidente']['data'],
|
|
'acidente_hora' => $params['acidente']['hora'] ?? null,
|
|
'acidente_tipo_id' => $params['acidente']['tipo_id'] ?? null,
|
|
'acidente_local' => $params['acidente']['local'] ?? null,
|
|
'acidente_descricao' => $params['acidente']['descricao'],
|
|
'regime_trabalho_id' => $params['regime_trabalho_id'] ?? null,
|
|
'regime_trabalho_outro' => $params['regime_trabalho_outro'] ?? null
|
|
]);
|
|
}
|
|
|
|
private function saveFila($params)
|
|
{
|
|
if (isset($params['id'])) {
|
|
|
|
return $params['id'];
|
|
}
|
|
|
|
$centroCusto = CentroCusto::findOrFail(auth()->payload()->get('centro_custo_id'));
|
|
|
|
$fila = FilaService::store([
|
|
'centro_custo_id' => $centroCusto->id,
|
|
'opcao_entrada_id' => $params['opcao_entrada_id'],
|
|
'prioridade_id' => $params['prioridade_id']
|
|
]);
|
|
|
|
return $fila->id;
|
|
}
|
|
|
|
private function saveAtendimentoRecepcao($atendimento, $params)
|
|
{
|
|
$plantaoId = $params['plantao_id'] ?? PlantaoService::getCurrentPlantao()->id ?? null;
|
|
|
|
if (isset($plantaoId)) {
|
|
|
|
PlantaoService::setStatusComAtendimento($plantaoId);
|
|
}
|
|
|
|
return $atendimento->recepcao()->create([
|
|
'plantao_id' => $plantaoId,
|
|
'atendido_em' => $params['atendido_em'],
|
|
'urgente' => $params['urgente'] ?? null,
|
|
'urgente_motivo' => $params['urgente_motivo'] ?? null,
|
|
'origem_entrada_id' => $params['origem_entrada_id'] ?? null,
|
|
'medico_samu' => $params['medico_samu'] ?? null,
|
|
'motivo_atendimento' => $params['motivo_atendimento'] ?? null,
|
|
'acompanhante' => $params['acompanhante'] ?? null,
|
|
'unidade_encaminhamento_id' => $params['unidade_encaminhamento_id'] ?? null,
|
|
'unidade_externa_encaminhamento_id' => $params['unidade_externa_encaminhamento_id'] ?? null,
|
|
'medico_solicitante_encaminhamento' => $params['medico_solicitante_encaminhamento'] ?? null,
|
|
'servico_id' => $params['servico_id'],
|
|
'ocupacao_id' => $params['ocupacao_id'] ?? null,
|
|
'observacao' => $params['observacao'] ?? null,
|
|
]);
|
|
}
|
|
|
|
private function encaminharFila($pacienteId, $filaId, $params)
|
|
{
|
|
FilaService::forward([
|
|
'centro_custo_id_para' => $params['centro_custo_id_para'],
|
|
'prioridade_id' => $params['prioridade_id'] ?? null,
|
|
'paciente_id' => $pacienteId,
|
|
], $filaId);
|
|
}
|
|
|
|
private function getImpressoes($recepcao)
|
|
{
|
|
$cidadao = $recepcao->atendimento->faa->paciente->cidadao;
|
|
$fila = $recepcao->atendimento->fila;
|
|
|
|
$impressoesFAA = ImpressaoService::getImpressoesFaa($recepcao->atendimento_id);
|
|
$indiceFaaEletronica = array_search('eletronica', array_column($impressoesFAA, 'value'));
|
|
unset($impressoesFAA[$indiceFaaEletronica]);
|
|
|
|
return [
|
|
'recepcao' => ImpressaoService::getImpressoesRecepcao(
|
|
$recepcao->atendimento_id,
|
|
[
|
|
'etiqueta' => [
|
|
'atendido_em' => (new Carbon($recepcao->atendido_em))->format('d/m/Y H:i'),
|
|
'infraestrutura' => $recepcao->createdLotacao->infraestrutura->nome,
|
|
'acompanhante' => $recepcao->acompanhante ?? '',
|
|
'paciente' => $cidadao->nome,
|
|
'data_nascimento' => $cidadao->data_nascimento
|
|
? $cidadao->data_nascimento->format('d/m/Y') : '',
|
|
'senha' => $recepcao->atendimento->fila->senha
|
|
],
|
|
'senha' => [
|
|
'data' => $fila->data_emissao,
|
|
'hora' => $fila->hora_emissao,
|
|
'senha' => $fila->senha,
|
|
]
|
|
]
|
|
),
|
|
'faa' => array_values($impressoesFAA)
|
|
];
|
|
}
|
|
|
|
private static function getPermissoesAtualizacaoCadastroPaciente()
|
|
{
|
|
$parametrizacao = CnsService::getParametrizacao();
|
|
|
|
if (!is_null($parametrizacao)) {
|
|
$lotacao = self::getCurrentLotacao();
|
|
|
|
return DB::table('cadastro_parametrizacao_permissao_usuario')
|
|
->select([
|
|
'municipe',
|
|
'provisorio',
|
|
'outro_municipio',
|
|
])
|
|
->where('infraestrutura_id', $lotacao->infraestrutura_id)
|
|
->where('usuario_id', $lotacao->usuario_id)
|
|
->get()
|
|
->first();
|
|
}
|
|
|
|
return null;
|
|
}
|
|
}
|