This commit is contained in:
104
api/app/Services/Geral/CiapService.php
Normal file
104
api/app/Services/Geral/CiapService.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\Geral;
|
||||
|
||||
use App\Enums\Geral\CiapCondicaoAvaliada;
|
||||
use App\Enums\Geral\GrupoCiap;
|
||||
use App\Models\Sigtap\Cid;
|
||||
use App\Services\Service;
|
||||
use App\Utils\DataUtil;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CiapService extends Service
|
||||
{
|
||||
public static function autocomplete()
|
||||
{
|
||||
$notShowAll = is_null(request()->get('show_all')) || DataUtil::isStringFalse(request()->get('show_all'));
|
||||
|
||||
$excludedValues = [
|
||||
CiapCondicaoAvaliada::ASMA,
|
||||
CiapCondicaoAvaliada::DENGUE,
|
||||
CiapCondicaoAvaliada::DESNUTRICAO,
|
||||
CiapCondicaoAvaliada::DIABETES,
|
||||
CiapCondicaoAvaliada::DPOC,
|
||||
CiapCondicaoAvaliada::DST,
|
||||
CiapCondicaoAvaliada::HANSENIASE,
|
||||
CiapCondicaoAvaliada::HIPERTENSAO_ARTERIAL,
|
||||
CiapCondicaoAvaliada::OBESIDADE,
|
||||
CiapCondicaoAvaliada::PRE_NATAL,
|
||||
CiapCondicaoAvaliada::PUERICULTURA,
|
||||
CiapCondicaoAvaliada::PUERPERIO,
|
||||
CiapCondicaoAvaliada::RASTREAMENTO_DE_RISCO_CARDIOVASCULAR,
|
||||
CiapCondicaoAvaliada::REABILITACAO,
|
||||
CiapCondicaoAvaliada::TABAGISMO,
|
||||
CiapCondicaoAvaliada::TUBERCULOSE,
|
||||
CiapCondicaoAvaliada::USUARIO_DE_ALCOOL,
|
||||
CiapCondicaoAvaliada::USUARIO_DE_OUTRAS_DROGAS,
|
||||
];
|
||||
|
||||
if (request()->ciap_id) {
|
||||
$excludedValues[] = request()->ciap_id;
|
||||
}
|
||||
|
||||
$ciap = DB::table('geral_ciap')
|
||||
->select(
|
||||
'geral_ciap.codigo',
|
||||
'geral_ciap.id',
|
||||
'geral_ciap.descricao',
|
||||
'geral_ciap_cid.codigo_cid',
|
||||
'geral_ciap.sexo_id',
|
||||
'geral_ciap.grupo_id',
|
||||
'sigtap.cid.id as cid_id',
|
||||
'sigtap.cid.codigo as cid_codigo',
|
||||
'sigtap.cid.nome as cid_nome',
|
||||
)
|
||||
->leftJoin('geral_ciap_cid', 'geral_ciap_cid.codigo_ciap', 'geral_ciap.codigo')
|
||||
->leftJoin('sigtap.cid', 'sigtap.cid.codigo', 'geral_ciap_cid.codigo_cid')
|
||||
->when($notShowAll, fn ($q) => $q
|
||||
->whereNotIn('geral_ciap.id', $excludedValues)
|
||||
->whereNotIn('geral_ciap.grupo_id', [GrupoCiap::PROCEDIMENTOS])
|
||||
)
|
||||
->when(request()->sexo_id, function ($query, $sexo_id) {
|
||||
$query->where(function ($subquery) use ($sexo_id) {
|
||||
$subquery->where('geral_ciap.sexo_id', $sexo_id)->orWhereNull('geral_ciap.sexo_id');
|
||||
});
|
||||
})
|
||||
->when(is_array(request()->not_in), fn ($q) => $q->whereNotIn('geral_ciap.codigo', request()->not_in));
|
||||
|
||||
if (request()->query('cid_id')) {
|
||||
|
||||
$ciap->where(function ($query) {
|
||||
|
||||
$cidCodigo = Cid::findOrFail(request()->query('cid_id'))->codigo;
|
||||
|
||||
$query->whereExists(function($query) use ($cidCodigo) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('geral_ciap_cid')
|
||||
->whereColumn('geral_ciap_cid.codigo_ciap', 'geral_ciap.codigo')
|
||||
->where('codigo_cid', $cidCodigo);
|
||||
})
|
||||
->orWhereNotExists(function($query) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('geral_ciap_cid')
|
||||
->whereColumn('geral_ciap_cid.codigo_ciap', 'geral_ciap.codigo');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
return $ciap;
|
||||
}
|
||||
|
||||
public static function index()
|
||||
{
|
||||
return DB::table('geral_ciap as ciap')
|
||||
->when(request()->codigo, fn ($q, $codigo) => $q->where('ciap.codigo', $codigo))
|
||||
->select(
|
||||
'ciap.id',
|
||||
'ciap.codigo',
|
||||
'ciap.descricao',
|
||||
'ciap.grupo_id',
|
||||
'ciap.sexo_id'
|
||||
)
|
||||
->get();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user