125 lines
6.7 KiB
PHP
125 lines
6.7 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Parametrizacao\Exame;
|
|
|
|
use App\Models\Intranet\Cliente;
|
|
use App\Models\Parametrizacao\Exame\Exame;
|
|
use App\Models\Parametrizacao\Exame\ExameComposicao;
|
|
use App\Models\Parametrizacao\Exame\ExameComposicaoLista;
|
|
use App\Models\Parametrizacao\Exame\ExameComposicaoVariavel;
|
|
use App\Models\Parametrizacao\Exame\ExameTextoPronto;
|
|
use App\Services\Service;
|
|
use Carbon\Carbon;
|
|
|
|
class ExameComposicaoService extends Service
|
|
{
|
|
public static function index($id)
|
|
{
|
|
$currentLotacao = self::getCurrentLotacao();
|
|
$cliente = Cliente::where('link', app('config')->get('database.default'))->firstOrFail();
|
|
|
|
$exame = Exame::findOrFail($id);
|
|
|
|
return [
|
|
'form' => [
|
|
'data_atual' => Carbon::now()->format('d/m/Y'),
|
|
'unidade' => $currentLotacao->infraestrutura->unidade->nome_fantasia,
|
|
'unidade_id' => $currentLotacao->infraestrutura->unidade->id,
|
|
'infraestrutura_id' => $currentLotacao->infraestrutura->id,
|
|
'infraestrutura' => $currentLotacao->infraestrutura->nome,
|
|
'sistema' => [
|
|
'ramo_atividade' => [
|
|
'nome' => $cliente->sistema->ramoAtividade->nome ?? null,
|
|
],
|
|
'nome' => $cliente->sistema->nome ?? null,
|
|
'versao' => $cliente->sistema->versao ?? null,
|
|
],
|
|
'exame' => [
|
|
'tipo_id' => $exame->tipo_id ?? null,
|
|
'grupo_tipo_id' => $exame->grupo_tipo_id ?? null,
|
|
'procedimento' => $exame->procedimento ?? null,
|
|
'sigla_exame' => $exame->sigla_exame ?? null,
|
|
'nome' => $exame->nome ?? null,
|
|
'ativo' => $exame->ativo ?? true,
|
|
'observacao' => $exame->observacao ?? null,
|
|
'laboratorio' => [
|
|
'prazo_entrega' => $exame->prazo_entrega ?? null,
|
|
'validade' => $exame->validade ?? null,
|
|
'valor' => $valor ?? null,
|
|
'quantidade_maxima' => $exame->quantidade_maxima ?? null,
|
|
'outro_municipio' => $exame->outro_municipio ?? false,
|
|
'provisorio' => $exame->provisorio ?? false,
|
|
'sigilo' => $exame->sigilo ?? false,
|
|
'senha_supervisor' => $exame->senha_supervisor ?? false,
|
|
'ultimo_resultado' => $exame->ultimo_resultado ?? null,
|
|
'mapa_agrupado' => $exame->mapa_agrupado ?? false,
|
|
'posicao_mapa' => $exame->posicao_mapa ?? null
|
|
],
|
|
'imagem' => [
|
|
'prazo_entrega' => $exame->prazo_entrega ?? null,
|
|
'validade' => $exame->validade ?? null,
|
|
'valor' => $valor ?? null,
|
|
'quantidade_maxima' => $exame->quantidade_maxima ?? null,
|
|
'outro_municipio' => $exame->outro_municipio ?? false,
|
|
'provisorio' => $exame->provisorio ?? false,
|
|
'senha_supervisor' => $exame->senha_supervisor ?? false,
|
|
'ultimo_resultado' => $exame->ultimo_resultado ?? null,
|
|
'resultado' => $exame->resultado ?? null
|
|
],
|
|
'composicao' => ExameComposicao::where('exame_id', $id)
|
|
->get()
|
|
->map(fn ($query) => [
|
|
'id' => $query->id,
|
|
'exame_id' => $query->exame_id,
|
|
'descricao' => $query->descricao,
|
|
'limite_inferior' => number_format($query->limite_inferior, 2, ',', '.'),
|
|
'limite_superior' => number_format($query->limite_superior, 2, ',', '.'),
|
|
'unidade_id' => $query->unidade_id,
|
|
'unidade' => $query->unidade->descricao ?? null,
|
|
'referencia' => $query->referencia,
|
|
'tipo_idade_id' => $query->tipo_idade_id,
|
|
'tipo_idade' =>$query->tipo_idade_id ? $query->tipoIdade->descricao : '-',
|
|
'idade_inicial' => $query->idade_inicial,
|
|
'idade_final' => $query->idade_final,
|
|
'sexo_id' => $query->sexo_id,
|
|
'sexo' => $query->sexo->descricao ?? 'AMBOS',
|
|
'tipo_resultado_id' => $query->tipo_resultado_id,
|
|
'tipo_resultado' => $query->tipoResultado->descricao,
|
|
'casa_decimal_id' => $query->casa_decimal_id,
|
|
'formula_id' => $query->formula_id,
|
|
'visivel' => $query->visivel,
|
|
'valor_absoluto' => $query->valor_absoluto,
|
|
'referencia_especial' => $query->referencia_especial,
|
|
'lista' => ExameComposicaoLista::where('composicao_id', $query->id)
|
|
->get()
|
|
->map(fn ($composicao) => [
|
|
'id' => $composicao->id,
|
|
'descricao' => $composicao->descricao,
|
|
'ordem' => $composicao->ordem,
|
|
'situacao_id' => $composicao->situacao_id,
|
|
'situacao' => $composicao->situacao->descricao,
|
|
'padrao' => $composicao->padrao,
|
|
]),
|
|
'variavel' => ExameComposicaoVariavel::where('composicao_id', $query->id)
|
|
->get()
|
|
->map(fn ($variavel) => [
|
|
'id' => $variavel->id,
|
|
'ordem' => $variavel->ordem,
|
|
'fator_id' => $variavel->fator_id ?? null,
|
|
'fator' => $variavel->fator->fator ?? null,
|
|
]),
|
|
]),
|
|
'texto_pronto' => ExameTextoPronto::where('exame_id', $id)
|
|
->get()
|
|
->map(fn ($query) => [
|
|
'id' => $query->id,
|
|
'exame_id' => $query->exame_id,
|
|
'codigo' => $query->codigo,
|
|
'descricao' => $query->descricao,
|
|
]),
|
|
],
|
|
],
|
|
];
|
|
}
|
|
}
|