init commit
All checks were successful
build-api-image / build (push) Successful in 51s

This commit is contained in:
Antonio Lopes dos Santos
2026-08-04 16:52:02 -03:00
commit afec302c3e
11594 changed files with 1636728 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Http\Controllers\Controller;
use App\Services\Sigtap\CidService;
class CidController extends Controller
{
public function datatable()
{
return datatables()->of(CidService::datatable())->toJson();
}
public function autocomplete()
{
return datatables()->of(CidService::autocomplete())->toJson();
}
public function index()
{
return CidService::index();
}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Http\Controllers\Controller;
use App\Services\Sigtap\ClassificacaoService;
class ClassificacaoController extends Controller
{
public function autocomplete()
{
return datatables()->of(ClassificacaoService::autocomplete())->toJson();
}
}

View File

@@ -0,0 +1,15 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Http\Controllers\Controller;
use App\Services\Sigtap\FinanciamentoService;
use Illuminate\Http\Response;
class FinanciamentoController extends Controller
{
public function index()
{
return response()->json(FinanciamentoService::index(), Response::HTTP_OK);
}
}

View File

@@ -0,0 +1,182 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Http\Controllers\Controller;
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
use App\Models\Cadastro\SujeitoAtencao\Paciente;
use App\Models\Sigtap\Competencia;
use App\Services\Sigtap\ProcedimentoService;
use App\Utils\DataUtil;
use Illuminate\Support\Facades\DB;
class ListaProcedimentoController extends Controller
{
public function datatable()
{
$procedimento = (new ProcedimentoService($this->getParams()))->getProcedimentosBuilder();
return datatables()->of($procedimento)->make(true);
}
public function autocomplete()
{
$procedimento = (new ProcedimentoService($this->getParams()))->getProcedimentosBuilder();
$datatable = datatables()->of($procedimento);
if (DataUtil::isStringTrue(request()->query('with_atributos_complementares'))) {
$datatable->editColumn('atributos_complementares', fn ($p) => explode('#', $p->atributos_complementares));
}
return $datatable->make(true);
}
private function getParams()
{
$params = [];
$params['search_by_apelido'] = DataUtil::isStringTrue(request()->query('search_by_apelido'));
if (request()->query('competencia_id')) {
$params['competencia_id'] = request()->query('competencia_id');
}
else if (request()->query('competencia')) {
$params['competencia_id'] = Competencia::where('valor', request()->query('competencia'))->first()->id ?? null;
}
if (request()->query('procedimento_principal_codigo')) {
$params['procedimento_principal_codigo'] = request()->query('procedimento_principal_codigo');
}
$params['with_atributos_complementares'] = DataUtil::isStringTrue(request()->query('with_atributos_complementares'));
if (request()->query('instrumento_registro')) {
$data = request()->query('instrumento_registro');
if (is_array($data)) {
$params['instrumento_registro'] = $data;
} else {
$params['instrumento_registro'] = [$data];
}
}
if (DataUtil::isStringTrue(request()->query('cbo_lotacao_atual'))) {
$params['cbo'] = Lotacao::findOrFail(auth()->payload()->get('lotacao_id'))->ocupacao->codigo;
}
else if (is_array(request()->query('cbo')) || strlen(request()->query('cbo') ?? '') === 6) {
$params['cbo'] = request()->query('cbo');
}
if (request()->query('ocupacao_id')) {
$params['ocupacao_id'] = request()->query('ocupacao_id');
}
if (request()->query('cid_id')) {
$params['cid_id'] = request()->query('cid_id');
}
if (is_string(request()->query('registro'))) {
$params['registro'] = request()->query('registro');
}
if (is_numeric(request()->query('paciente_id'))) {
$params['paciente'] = Paciente::findOrFail(request()->query('paciente_id'));
}
if (request()->query('where')) {
$params['where'] = request()->query('where');
}
if (request()->query('where_not')) {
$params['where_not'] = request()->query('where_not');
}
if (request()->query('atendimento_odontologico')) {
$params['atendimento_odontologico'] = request()->query('atendimento_odontologico');
}
if (DataUtil::isStringBoolean(request()->query('only_with_cbo'))) {
$params['only_with_cbo'] = DataUtil::getBooleanValueFromStringBoolean(request()->query('only_with_cbo'));
}
if (DataUtil::isStringBoolean(request()->query('only_with_cid'))) {
$params['only_with_cid'] = DataUtil::getBooleanValueFromStringBoolean(request()->query('only_with_cid'));
}
if (DataUtil::isStringBoolean(request()->query('only_without_cid'))) {
$params['only_without_cid'] = DataUtil::getBooleanValueFromStringBoolean(request()->query('only_without_cid'));
}
if (request()->get('exames')) {
$params['like_codigo'] = '02%';
}
if (DataUtil::isStringTrue(request()->query('only_oci'))) {
$params['like_codigo'] = '09%';
}
if (DataUtil::isStringTrue(request()->query('atendimento_domiciliar'))) {
$params['like_codigo'] = ['01%', '02%', '03%', '04%', '0804%'];
}
if (DataUtil::isStringTrue(request()->query('ficha_procedimento'))) {
$params['like_codigo'] = ['01%', '02%', '03%', '04%', '0804%'];
}
return $params;
}
public static function index()
{
return DB::table('sigtap.procedimento as procedimento')
->when(request()->competencia,
fn ($q, $competencia) => $q->where(
'procedimento.competencia_id',
DB::table('sigtap.competencia')->where('valor', $competencia)->first('id')->id
),
fn ($q) => $q->where('procedimento.competencia_id', DB::table('sigtap.competencia')->max('id'))
)
->when(request()->codigo, fn ($q, $codigo) => $q->where('procedimento.codigo', $codigo))
->select(
'procedimento.id',
'procedimento.competencia_id',
'procedimento.financiamento_id',
'procedimento.rubrica_id',
'procedimento.codigo',
'procedimento.nome',
'procedimento.complexidade',
'procedimento.sexo',
'procedimento.quantidade_maxima_execucao',
'procedimento.quantidade_dias_permanencia',
'procedimento.quantidade_pontos',
'procedimento.idade_minima',
'procedimento.idade_maxima',
'procedimento.valor_servico_hospitalar',
'procedimento.valor_servico_ambilatorial',
'procedimento.valor_servico_profissional',
'procedimento.quantidade_tempo_permanencia',
)
->get();
}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Http\Controllers\Controller;
use App\Services\Sigtap\OcupacaoService;
class OcupacaoController extends Controller
{
public function autocomplete()
{
return datatables()->of(OcupacaoService::autocomplete())->toJson();
}
}

View File

@@ -0,0 +1,28 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Exceptions\Sigtap\Validations\ProcedimentoException;
use App\Http\Controllers\Controller;
use App\Models\Sigtap\Procedimento;
use Illuminate\Http\Response;
class ProcedimentoController extends Controller
{
public function index()
{
return response()->json($this->get(Procedimento::class)->get(), Response::HTTP_OK);
}
public function show($id)
{
return response()->json($this->get(Procedimento::class, $id), Response::HTTP_OK);
}
public function autocomplete()
{
$procedimentos = Procedimento::with([]);
return datatables()->of($procedimentos)->toJson();
}
}

View File

@@ -0,0 +1,14 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Http\Controllers\Controller;
use App\Services\Sigtap\ServicoService;
class ServicoController extends Controller
{
public function autocomplete()
{
return datatables()->of(ServicoService::autocomplete())->toJson();
}
}

View File

@@ -0,0 +1,65 @@
<?php
namespace App\Http\Controllers\Sigtap;
use App\Http\Controllers\Controller;
use App\Http\Requests\Sigtap\ValidacaoIdadeRequest;
use App\Http\Requests\Sigtap\ValidacaoOcupacaoRequest;
use App\Http\Requests\Sigtap\ValidacaoQuantidadeRequest;
use App\Http\Requests\Sigtap\ValidacaoSexoRequest;
use App\Models\Cadastro\SujeitoAtencao\Lotacao;
use App\Models\Cadastro\SujeitoAtencao\Sexo;
use App\Models\Sigtap\Ocupacao;
use App\Models\Sigtap\Procedimento;
use App\Services\Sigtap\ProcedimentoValidationService;
use Illuminate\Http\Response;
class ValidacaoController extends Controller
{
public function ocupacao(ValidacaoOcupacaoRequest $request)
{
$procedimento = Procedimento::find($request->procedimento_id);
$validationService = new ProcedimentoValidationService($procedimento);
$ocupacao = is_null($request->ocupacao_id)
? Lotacao::findOrFail(auth()->payload()->get('lotacao_id'))->ocupacao
: Ocupacao::find($request->ocupacao_id);
return $this->getResponseJson($validationService->isOcupacaoValid($ocupacao));
}
public function sexo(ValidacaoSexoRequest $request)
{
$procedimento = Procedimento::find($request->procedimento_id);
$validationService = new ProcedimentoValidationService($procedimento);
$sexo = Sexo::find($request->sexo_id);
return $this->getResponseJson($validationService->isSexoValid($sexo));
}
public function idade(ValidacaoIdadeRequest $request)
{
$procedimento = Procedimento::find($request->procedimento_id);
$validationService = new ProcedimentoValidationService($procedimento);
$idadeEmAnos = (int) $request->idade_em_anos;
return $this->getResponseJson($validationService->isIdadeValid($idadeEmAnos));
}
public function quantidade(ValidacaoQuantidadeRequest $request)
{
$procedimento = Procedimento::find($request->procedimento_id);
$validationService = new ProcedimentoValidationService($procedimento);
$quantidade = (int) $request->quantidade;
return $this->getResponseJson($validationService->isQuantidadeValid($quantidade));
}
private function getResponseJson($valid)
{
return response()->json(['valido' => $valid], Response::HTTP_OK);
}
}