389 lines
22 KiB
PHP
389 lines
22 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Mobile\ConectaCidadao\HistoricoAtendimento;
|
|
|
|
use App\Services\Service;
|
|
use App\Services\Ambulatorio\AtendimentoHistoricoService as AmbulatorioHistoricoService;
|
|
use App\Services\ProntoAtendimento\HistoricoService as ProntoAtendimentoHistoricoService;
|
|
use App\Models\Cadastro\SujeitoAtencao\Paciente;
|
|
use App\Models\Mobile\ConectaCidadao\ConectaCidadaoAvaliacaoAtendimento;
|
|
use App\Models\Ambulatorio\AtendimentoPreAtendimento;
|
|
use App\Models\Ambulatorio\AtendimentoSoap;
|
|
use App\Models\Ambulatorio\AtendimentoPosConsulta;
|
|
use App\Models\ProntoAtendimento\Atendimento\Atendimento;
|
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Carbon\Carbon;
|
|
use Exception;
|
|
|
|
class HistoricoAtendimentoService extends Service
|
|
{
|
|
public function getHistorico(Paciente $paciente, $limit = 15)
|
|
{
|
|
$preAtendimentos = self::getPreAtendimentoQuery($paciente->id);
|
|
$atendimentosSoap = self::getAtendimentoSoapQuery($paciente->id);
|
|
$posConsulta = self::getPosConsultaQuery($paciente->id);
|
|
$prontoAtendimento = self::getProntoAtendimentosQuery($paciente->id);
|
|
|
|
$query = $preAtendimentos
|
|
->unionAll($atendimentosSoap)
|
|
->unionAll($posConsulta)
|
|
->unionAll($prontoAtendimento)
|
|
->orderBy('data_atendimento', 'desc');
|
|
|
|
$paginator = $query->paginate((int) $limit);
|
|
|
|
return [
|
|
'current_page' => $paginator->currentPage(),
|
|
'data' => array_map(function ($item) {
|
|
return self::formatItem($item);
|
|
}, $paginator->items()),
|
|
'first_page_url' => $paginator->url(1),
|
|
'from' => $paginator->firstItem(),
|
|
'last_page' => $paginator->lastPage(),
|
|
'last_page_url' => $paginator->url($paginator->lastPage()),
|
|
'next_page_url' => $paginator->nextPageUrl(),
|
|
'path' => $paginator->path(),
|
|
'per_page' => $paginator->perPage(),
|
|
'prev_page_url' => $paginator->previousPageUrl(),
|
|
'to' => $paginator->lastItem(),
|
|
'total' => $paginator->total(),
|
|
];
|
|
}
|
|
|
|
public function getDetalhes($id, $sourceType)
|
|
{
|
|
switch ($sourceType) {
|
|
case 'pre-atendimento':
|
|
return AmbulatorioHistoricoService::getPreAtendimento($id);
|
|
case 'soap':
|
|
return AmbulatorioHistoricoService::getAtendimentoSoap($id);
|
|
case 'pos-consulta':
|
|
return AmbulatorioHistoricoService::getPosConsulta($id);
|
|
case 'pronto-atendimento':
|
|
return ProntoAtendimentoHistoricoService::getAtendimento($id);
|
|
default:
|
|
throw new Exception('Tipo de atendimento inválido.');
|
|
}
|
|
}
|
|
|
|
public function avaliar(string $sourceType, int $id, array $params): void
|
|
{
|
|
$avaliacao = new ConectaCidadaoAvaliacaoAtendimento();
|
|
|
|
switch ($sourceType) {
|
|
case 'pre-atendimento':
|
|
AtendimentoPreAtendimento::findOrFail($id);
|
|
$avaliacao->ambulatorio_atendimento_pre_atendimento_id = $id;
|
|
break;
|
|
|
|
case 'soap':
|
|
AtendimentoSoap::findOrFail($id);
|
|
$avaliacao->ambulatorio_atendimento_soap_id = $id;
|
|
break;
|
|
|
|
case 'pos-consulta':
|
|
AtendimentoPosConsulta::findOrFail($id);
|
|
$avaliacao->ambulatorio_atendimento_pos_consulta_id = $id;
|
|
break;
|
|
|
|
case 'pronto-atendimento':
|
|
Atendimento::findOrFail($id);
|
|
$avaliacao->pronto_atendimento_atendimento_id = $id;
|
|
break;
|
|
|
|
default:
|
|
throw new \InvalidArgumentException('Tipo de origem inválido.');
|
|
}
|
|
|
|
$avaliacao->nota = $params['nota'] ?? null;
|
|
$avaliacao->comentario = $params['comentario'] ?? null;
|
|
|
|
$avaliacao->save();
|
|
}
|
|
|
|
private static function formatItem($item)
|
|
{
|
|
$item->created_at = Carbon::create($item->data_atendimento);
|
|
|
|
$dadosHistorico = [
|
|
'tipo' => $item->source_type,
|
|
'data_hora' => $item->created_at->format('d/m/Y \à\s H:i'),
|
|
'lotacao' => [
|
|
'ocupacao' => [
|
|
'codigo' => $item->ocupacao_codigo,
|
|
'nome' => $item->ocupacao_nome,
|
|
],
|
|
'profissional' => [
|
|
'nome' => $item->cidadao_nome,
|
|
],
|
|
],
|
|
'centro_custo' => [
|
|
'setor' => [
|
|
'nome' => $item->setor_nome,
|
|
],
|
|
'unidade' => [
|
|
'nome_fantasia' => $item->unidade_nome_fantasia,
|
|
],
|
|
],
|
|
'tipo_atendimento' => $item->tipo_atendimento,
|
|
'id' => $item->id,
|
|
'atendimento_id' => $item->atendimento_id,
|
|
'is_atendimento_enfermagem' => (bool) $item->is_atendimento_enfermagem,
|
|
'is_atendimento_soap_assinado' => (bool) $item->is_atendimento_soap_assinado,
|
|
];
|
|
|
|
return (object) $dadosHistorico;
|
|
}
|
|
|
|
private static function getProntoAtendimentosQuery($pacienteId)
|
|
{
|
|
return DB::table('pronto_atendimento_atendimento')
|
|
->select([
|
|
'pronto_atendimento_atendimento.id',
|
|
'pronto_atendimento_atendimento.id as atendimento_id',
|
|
'pronto_atendimento_atendimento_recepcao.atendido_em as data_atendimento',
|
|
'ocupacao.id AS ocupacao_id',
|
|
'ocupacao.codigo AS ocupacao_codigo',
|
|
'ocupacao.nome AS ocupacao_nome',
|
|
'cadastro_cidadao.nome AS cidadao_nome',
|
|
'cadastro_setor.nome AS setor_nome',
|
|
'cadastro_centro_custo.infraestrutura_id AS centro_custo_infraestrutura_id',
|
|
'cadastro_unidade.nome_fantasia AS unidade_nome_fantasia',
|
|
DB::raw("'Pronto Atendimento' AS tipo_atendimento"),
|
|
DB::raw("false as is_atendimento_enfermagem"),
|
|
DB::raw("false as is_atendimento_soap_assinado"),
|
|
DB::raw("'pronto-atendimento' as source_type")
|
|
])
|
|
->join('pronto_atendimento_faa', 'pronto_atendimento_faa.id', 'pronto_atendimento_atendimento.faa_id')
|
|
->join('pronto_atendimento_atendimento_recepcao', 'pronto_atendimento_atendimento_recepcao.atendimento_id', 'pronto_atendimento_atendimento.id')
|
|
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'pronto_atendimento_faa.lotacao_id')
|
|
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
|
->join('sigtap.ocupacao', 'ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
|
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'pronto_atendimento_faa.created_centro_custo_id')
|
|
->join('cadastro_setor', 'cadastro_setor.id', 'cadastro_centro_custo.setor_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
|
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
|
->where('pronto_atendimento_faa.paciente_id', $pacienteId)
|
|
->whereNull('pronto_atendimento_atendimento.deleted_at');
|
|
}
|
|
|
|
private static function getPreAtendimentoQuery($pacienteId)
|
|
{
|
|
return DB::table('ambulatorio_atendimento_pre_atendimento')
|
|
->select([
|
|
'ambulatorio_atendimento_pre_atendimento.id',
|
|
'ambulatorio_atendimento_pre_atendimento.atendimento_id',
|
|
'ambulatorio_atendimento_pre_atendimento.created_at as data_atendimento',
|
|
'ocupacao.id AS ocupacao_id',
|
|
'ocupacao.codigo AS ocupacao_codigo',
|
|
'ocupacao.nome AS ocupacao_nome',
|
|
'cadastro_cidadao.nome AS cidadao_nome',
|
|
'cadastro_setor.nome AS setor_nome',
|
|
'cadastro_centro_custo.infraestrutura_id AS centro_custo_infraestrutura_id',
|
|
'cadastro_unidade.nome_fantasia AS unidade_nome_fantasia',
|
|
DB::raw("'Pré-atendimento' AS tipo_atendimento"),
|
|
DB::raw("false as is_atendimento_enfermagem"),
|
|
DB::raw("false as is_atendimento_soap_assinado"),
|
|
DB::raw("'pre-atendimento' as source_type")
|
|
])
|
|
->join('ambulatorio_atendimento', 'ambulatorio_atendimento.id', 'ambulatorio_atendimento_pre_atendimento.atendimento_id')
|
|
->join('ambulatorio_agendamento', 'ambulatorio_agendamento.id', 'ambulatorio_atendimento.agendamento_id')
|
|
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'ambulatorio_atendimento_pre_atendimento.created_lotacao_id')
|
|
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
|
->join('sigtap.ocupacao', 'ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
|
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'ambulatorio_atendimento_pre_atendimento.created_centro_custo_id')
|
|
->join('cadastro_setor', 'cadastro_setor.id', 'cadastro_centro_custo.setor_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
|
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
|
->where('ambulatorio_agendamento.paciente_id', $pacienteId)
|
|
->unionAll(
|
|
DB::table('ambulatorio_atendimento_pre_atendimento')
|
|
->select([
|
|
'ambulatorio_atendimento_pre_atendimento.id',
|
|
'ambulatorio_atendimento_pre_atendimento.atendimento_id',
|
|
'ambulatorio_atendimento_pre_atendimento.created_at as data_atendimento',
|
|
'ocupacao.id AS ocupacao_id',
|
|
'ocupacao.codigo AS ocupacao_codigo',
|
|
'ocupacao.nome AS ocupacao_nome',
|
|
'cadastro_cidadao.nome AS cidadao_nome',
|
|
'cadastro_setor.nome AS setor_nome',
|
|
'cadastro_centro_custo.infraestrutura_id AS centro_custo_infraestrutura_id',
|
|
'cadastro_unidade.nome_fantasia AS unidade_nome_fantasia',
|
|
DB::raw("'Pré-atendimento' AS tipo_atendimento"),
|
|
DB::raw("false as is_atendimento_enfermagem"),
|
|
DB::raw("false as is_atendimento_soap_assinado"),
|
|
DB::raw("'pre-atendimento' as source_type")
|
|
])
|
|
->join('ambulatorio_atendimento', 'ambulatorio_atendimento.id', 'ambulatorio_atendimento_pre_atendimento.atendimento_id')
|
|
->join('ambulatorio_demanda_espontanea', 'ambulatorio_demanda_espontanea.id', 'ambulatorio_atendimento.demanda_espontanea_id')
|
|
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'ambulatorio_atendimento_pre_atendimento.created_lotacao_id')
|
|
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
|
->join('sigtap.ocupacao', 'ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
|
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'ambulatorio_atendimento_pre_atendimento.created_centro_custo_id')
|
|
->join('cadastro_setor', 'cadastro_setor.id', 'cadastro_centro_custo.setor_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
|
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
|
->where('ambulatorio_demanda_espontanea.paciente_id', $pacienteId)
|
|
);
|
|
}
|
|
|
|
private static function getAtendimentoSoapQuery($pacienteId)
|
|
{
|
|
return DB::table('ambulatorio_atendimento_soap')
|
|
->select([
|
|
'ambulatorio_atendimento_soap.id',
|
|
'ambulatorio_atendimento_soap.atendimento_id',
|
|
'jornada.data as data_atendimento',
|
|
'ocupacao.id AS ocupacao_id',
|
|
'ocupacao.codigo AS ocupacao_codigo',
|
|
'ocupacao.nome AS ocupacao_nome',
|
|
'cadastro_cidadao.nome AS cidadao_nome',
|
|
'cadastro_setor.nome AS setor_nome',
|
|
'cadastro_centro_custo.infraestrutura_id AS centro_custo_infraestrutura_id',
|
|
'cadastro_unidade.nome_fantasia AS unidade_nome_fantasia',
|
|
DB::raw("'Atendimento' AS tipo_atendimento"),
|
|
'ambulatorio_atendimento_soap.is_atendimento_enfermagem',
|
|
'ambulatorio_atendimento_soap.is_atendimento_soap_assinado',
|
|
DB::raw("'soap' as source_type")
|
|
])
|
|
->join('ambulatorio_atendimento', 'ambulatorio_atendimento.id', 'ambulatorio_atendimento_soap.atendimento_id')
|
|
->join('ambulatorio_agendamento', 'ambulatorio_agendamento.id', 'ambulatorio_atendimento.agendamento_id')
|
|
->join('ambulatorio_jornada as jornada', 'jornada.id', 'ambulatorio_agendamento.jornada_id')
|
|
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'jornada.lotacao_id')
|
|
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
|
->join('sigtap.ocupacao', 'ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
|
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'ambulatorio_atendimento_soap.created_centro_custo_id')
|
|
->join('cadastro_setor', 'cadastro_setor.id', 'cadastro_centro_custo.setor_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
|
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
|
->where('ambulatorio_atendimento_soap.is_rascunho', false)
|
|
->where('ambulatorio_agendamento.paciente_id', $pacienteId)
|
|
->unionAll(
|
|
DB::table('ambulatorio_atendimento_soap')
|
|
->select([
|
|
'ambulatorio_atendimento_soap.id',
|
|
'ambulatorio_atendimento_soap.atendimento_id',
|
|
'ambulatorio_demanda_espontanea.data as data_atendimento',
|
|
'ocupacao.id AS ocupacao_id',
|
|
'ocupacao.codigo AS ocupacao_codigo',
|
|
'ocupacao.nome AS ocupacao_nome',
|
|
'cadastro_cidadao.nome AS cidadao_nome',
|
|
'cadastro_setor.nome AS setor_nome',
|
|
'cadastro_centro_custo.infraestrutura_id AS centro_custo_infraestrutura_id',
|
|
'cadastro_unidade.nome_fantasia AS unidade_nome_fantasia',
|
|
DB::raw("'Atendimento' AS tipo_atendimento"),
|
|
'ambulatorio_atendimento_soap.is_atendimento_enfermagem',
|
|
'ambulatorio_atendimento_soap.is_atendimento_soap_assinado',
|
|
DB::raw("'soap' as source_type")
|
|
])
|
|
->join('ambulatorio_atendimento', 'ambulatorio_atendimento.id', 'ambulatorio_atendimento_soap.atendimento_id')
|
|
->join('ambulatorio_demanda_espontanea', 'ambulatorio_demanda_espontanea.id', 'ambulatorio_atendimento.demanda_espontanea_id')
|
|
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'ambulatorio_atendimento_soap.created_lotacao_id')
|
|
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
|
->join('sigtap.ocupacao', 'ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
|
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'ambulatorio_atendimento_soap.created_centro_custo_id')
|
|
->join('cadastro_setor', 'cadastro_setor.id', 'cadastro_centro_custo.setor_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
|
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
|
->where('ambulatorio_atendimento_soap.is_rascunho', false)
|
|
->where('ambulatorio_demanda_espontanea.paciente_id', $pacienteId)
|
|
);
|
|
}
|
|
|
|
private static function getPosConsultaQuery($pacienteId)
|
|
{
|
|
return DB::table('ambulatorio_atendimento_pos_consulta')
|
|
->select([
|
|
'ambulatorio_atendimento_pos_consulta.id',
|
|
'ambulatorio_atendimento_pos_consulta.atendimento_id',
|
|
'ambulatorio_atendimento_pos_consulta.created_at as data_atendimento',
|
|
'ocupacao.id AS ocupacao_id',
|
|
'ocupacao.codigo AS ocupacao_codigo',
|
|
'ocupacao.nome AS ocupacao_nome',
|
|
'cadastro_cidadao.nome AS cidadao_nome',
|
|
'cadastro_setor.nome AS setor_nome',
|
|
'cadastro_centro_custo.infraestrutura_id AS centro_custo_infraestrutura_id',
|
|
'cadastro_unidade.nome_fantasia AS unidade_nome_fantasia',
|
|
DB::raw("'Pós-consulta' AS tipo_atendimento"),
|
|
DB::raw("false as is_atendimento_enfermagem"),
|
|
DB::raw("false as is_atendimento_soap_assinado"),
|
|
DB::raw("'pos-consulta' as source_type")
|
|
])
|
|
->join('ambulatorio_atendimento', 'ambulatorio_atendimento.id', 'ambulatorio_atendimento_pos_consulta.atendimento_id')
|
|
->join('ambulatorio_agendamento', 'ambulatorio_agendamento.id', 'ambulatorio_atendimento.agendamento_id')
|
|
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'ambulatorio_atendimento_pos_consulta.created_lotacao_id')
|
|
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
|
->join('sigtap.ocupacao', 'ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
|
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'ambulatorio_atendimento_pos_consulta.created_centro_custo_id')
|
|
->join('cadastro_setor', 'cadastro_setor.id', 'cadastro_centro_custo.setor_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
|
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
|
->where('ambulatorio_agendamento.paciente_id', $pacienteId)
|
|
->unionAll(
|
|
DB::table('ambulatorio_atendimento_pos_consulta')
|
|
->select([
|
|
'ambulatorio_atendimento_pos_consulta.id',
|
|
'ambulatorio_atendimento_pos_consulta.atendimento_id',
|
|
'ambulatorio_atendimento_pos_consulta.created_at as data_atendimento',
|
|
'ocupacao.id AS ocupacao_id',
|
|
'ocupacao.codigo AS ocupacao_codigo',
|
|
'ocupacao.nome AS ocupacao_nome',
|
|
'cadastro_cidadao.nome AS cidadao_nome',
|
|
'cadastro_setor.nome AS setor_nome',
|
|
'cadastro_centro_custo.infraestrutura_id AS centro_custo_infraestrutura_id',
|
|
'cadastro_unidade.nome_fantasia AS unidade_nome_fantasia',
|
|
DB::raw("'Pós-consulta' AS tipo_atendimento"),
|
|
DB::raw("false as is_atendimento_enfermagem"),
|
|
DB::raw("false as is_atendimento_soap_assinado"),
|
|
DB::raw("'pos-consulta' as source_type")
|
|
])
|
|
->join('ambulatorio_atendimento', 'ambulatorio_atendimento.id', 'ambulatorio_atendimento_pos_consulta.atendimento_id')
|
|
->join('ambulatorio_demanda_espontanea', 'ambulatorio_demanda_espontanea.id', 'ambulatorio_atendimento.demanda_espontanea_id')
|
|
->join('cadastro_lotacao', 'cadastro_lotacao.id', 'ambulatorio_atendimento_pos_consulta.created_lotacao_id')
|
|
->join('cadastro_usuario', 'cadastro_usuario.id', 'cadastro_lotacao.usuario_id')
|
|
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
|
->join('sigtap.ocupacao', 'ocupacao.id', 'cadastro_lotacao.ocupacao_id')
|
|
->join('cadastro_centro_custo', 'cadastro_centro_custo.id', 'ambulatorio_atendimento_pos_consulta.created_centro_custo_id')
|
|
->join('cadastro_setor', 'cadastro_setor.id', 'cadastro_centro_custo.setor_id')
|
|
->join('cadastro_infraestrutura', 'cadastro_infraestrutura.id', 'cadastro_centro_custo.infraestrutura_id')
|
|
->join('cadastro_unidade', 'cadastro_unidade.id', 'cadastro_infraestrutura.unidade_id')
|
|
->where('ambulatorio_demanda_espontanea.paciente_id', $pacienteId)
|
|
);
|
|
}
|
|
|
|
public function avaliacao(string $sourceType, int $id, array $params)
|
|
{
|
|
$campoMap = [
|
|
'pre-atendimento' => 'ambulatorio_atendimento_pre_atendimento_id',
|
|
'soap' => 'ambulatorio_atendimento_soap_id',
|
|
'pos-consulta' => 'ambulatorio_atendimento_pos_consulta_id',
|
|
'pronto-atendimento' => 'pronto_atendimento_atendimento_id',
|
|
];
|
|
|
|
if (!isset($campoMap[$sourceType])) {
|
|
|
|
throw new \InvalidArgumentException("Tipo de atendimento inválido: {$sourceType}");
|
|
}
|
|
|
|
$campo = $campoMap[$sourceType];
|
|
|
|
$avaliacao = DB::table('conecta_cidadao_avaliacao_atendimento')
|
|
->where($campo, $id)
|
|
->first();
|
|
|
|
if (!$avaliacao) {
|
|
|
|
throw new ModelNotFoundException('Avaliação não encontrada.');
|
|
}
|
|
|
|
return $avaliacao;
|
|
}
|
|
}
|