This commit is contained in:
@@ -0,0 +1,445 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\AtencaoBasica;
|
||||
|
||||
use App\Services\Service;
|
||||
use App\Utils\DataUtil;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class RelatorioEstatisticoAtendimentoService extends Service
|
||||
{
|
||||
public static function index() {
|
||||
$dataAtual = Carbon::now()->format('d/m/Y');
|
||||
$anoAtual = Carbon::now()->year;
|
||||
|
||||
return [
|
||||
"form" => [
|
||||
"competencias" => [
|
||||
"anos" => [],
|
||||
"meses" => []
|
||||
],
|
||||
"unidades" => [],
|
||||
"profissionais" => [],
|
||||
"locaisAtendimento" => [],
|
||||
"sexos" => self::getSexos(),
|
||||
"hipertensos" => self::getOptionsBoolean(),
|
||||
"gestantes" => self::getOptionsBoolean(),
|
||||
"diabeticos" => self::getOptionsBoolean(),
|
||||
"condicoesAvaliadas" => self::getCondicoesAvaliadas(),
|
||||
"doencasTransmissiveis" => self::getDoencasTransmissiveis(),
|
||||
"rastreamentos" => self::getRastreamentos(),
|
||||
"vacinas" => self::getOptionsBoolean(),
|
||||
"aleitamentosMaterno" => self::getAleitamentosMaterno(),
|
||||
],
|
||||
"model" => [
|
||||
"competencia" => [
|
||||
"ano" => $anoAtual,
|
||||
"mes" => null
|
||||
],
|
||||
"unidade" => null,
|
||||
"profissional" => null,
|
||||
"localAtendimento" => null,
|
||||
"prontuario" => null,
|
||||
"idadeMinima" => null,
|
||||
"idadeMaxima" => null,
|
||||
"sexo" => null,
|
||||
"hipertenso" => null,
|
||||
"gestante" => null,
|
||||
"diabetico" => null,
|
||||
"condicaoAvaliada" => null,
|
||||
"doencaTransmissivel" => null,
|
||||
"rastreamento" => null,
|
||||
"vacina" => null,
|
||||
"aleitamentoMaterno" => null,
|
||||
'ciap2' => null,
|
||||
'cid' => null,
|
||||
],
|
||||
"data_atual" => $dataAtual
|
||||
];
|
||||
}
|
||||
|
||||
public static function list() {
|
||||
$params = request()->all();
|
||||
$tipoListagem = $params['listar'];
|
||||
|
||||
switch ($tipoListagem) {
|
||||
case 'ano':
|
||||
return self::getAnosCompetencia();
|
||||
case 'mes':
|
||||
return self::getMesesCompetencia($params['competencia']['ano']);
|
||||
case 'unidade':
|
||||
return self::getUnidades($params);
|
||||
case 'profissional':
|
||||
return self::getProfissionais($params);
|
||||
case 'localAtendimento':
|
||||
return self::getLocaisAtendimento($params);
|
||||
default:
|
||||
return response()->json(["error" => "Informe o tipo de listagem através do listar"], Response::HTTP_NOT_ACCEPTABLE);
|
||||
}
|
||||
}
|
||||
|
||||
public static function search() {
|
||||
$params = request()->all();
|
||||
$ano = $params['competencia']['ano'];
|
||||
$mes = $params['competencia']['mes'];
|
||||
$unidade = $params['unidade'];
|
||||
$prontuario = $params['prontuario'];
|
||||
$idadeMinima = $params['idade_minima'];
|
||||
$idadeMaxima = $params['idade_maxima'];
|
||||
$sexo = $params['sexo'];
|
||||
$profissional = $params['profissional'];
|
||||
$hipertenso = $params['hipertenso'];
|
||||
$condicaoAvaliadaParametro = $params['condicao_avaliada'];
|
||||
$doencaTransmissivel = $params['doenca_transmissivel'];
|
||||
$rastreamento = $params['rastreamento'];
|
||||
$ciap2 = $params['ciap2'];
|
||||
$cid = $params['cid'];
|
||||
$diabetico = $params['diabetico'];
|
||||
$gestante = $params['gestante'];
|
||||
$aleitamentoMaterno = $params['aleitamento_materno'];
|
||||
$localAtendimento = $params['local_atendimento'];
|
||||
$vacina = $params['vacina'];
|
||||
|
||||
$totalizadores = [
|
||||
"unidades" => [],
|
||||
"profissionais" => [],
|
||||
"locaisAtendimento" => [],
|
||||
];
|
||||
|
||||
$registros = DB::table('atencao_basica_atendimento_individual')
|
||||
->select(
|
||||
'atencao_basica_atendimento_individual.id as atendimento_individual_id',
|
||||
'atencao_basica_atendimento_individual.paciente_id as paciente_id',
|
||||
DB::raw("DATE_FORMAT(atencao_basica_atendimento_individual.data_usuario_responsavel, '%d/%m/%Y') AS data"),
|
||||
'cadastro_unidade.id as unidade_id',
|
||||
'cadastro_unidade.nome_fantasia as unidade',
|
||||
'cidadao_paciente.nome as paciente',
|
||||
'cadastro_paciente.prontuario as prontuario',
|
||||
DB::raw("DATE_FORMAT(cidadao_paciente.data_nascimento, '%d/%m/%Y') AS data_nascimento"),
|
||||
'cadastro_sexo.descricao as sexo',
|
||||
'cidadao_usuario.nome as profissional',
|
||||
'atencao_basica_cadastro_individual.hipertensao as hipertenso',
|
||||
'atencao_basica_cadastro_individual.diabetes as diabetico',
|
||||
'atencao_basica_cadastro_individual.gestante as gestante',
|
||||
'atencao_basica_cadastro_aleitamento_materno.descricao as aleitamento_materno',
|
||||
'atencao_basica_local_atendimento.descricao as local_atendimento',
|
||||
'atencao_basica_atendimento_individual.vacinacao as vacina',
|
||||
DB::raw("
|
||||
(
|
||||
SELECT GROUP_CONCAT(c.descricao SEPARATOR '#')
|
||||
FROM atencao_basica_atendimento_individual_problema_condicao pc
|
||||
INNER JOIN geral_ciap c ON c.id = pc.ciap_id
|
||||
WHERE pc.atendimento_individual_id = atencao_basica_atendimento_individual.id
|
||||
) AS ciap
|
||||
"),
|
||||
DB::raw("
|
||||
(
|
||||
SELECT GROUP_CONCAT(c.nome SEPARATOR '#')
|
||||
FROM atencao_basica_atendimento_individual_problema_condicao pc
|
||||
INNER JOIN sigtap.cid c ON c.id = pc.cid_id
|
||||
WHERE pc.atendimento_individual_id = atencao_basica_atendimento_individual.id
|
||||
) AS cid
|
||||
")
|
||||
)
|
||||
->whereYear('atencao_basica_atendimento_individual.data_usuario_responsavel', $ano)
|
||||
->whereMonth('atencao_basica_atendimento_individual.data_usuario_responsavel', $mes)
|
||||
->where(fn($q) => isset($unidade) ? $q->where('cadastro_unidade.id', $unidade) : $q)
|
||||
->where(fn($q) => isset($prontuario) ? $q->where('cadastro_paciente.prontuario', $prontuario) : $q)
|
||||
->where(fn($q) => isset($sexo) ? $q->where('cidadao_paciente.sexo_id', $sexo) : $q)
|
||||
->where(fn($q) => isset($profissional) ? $q->where('cadastro_usuario.id', $profissional) : $q)
|
||||
->where(fn($q) => isset($hipertenso) ? $q->where('atencao_basica_cadastro_individual.hipertensao', DataUtil::getBooleanValueFromStringBoolean($hipertenso)) : $q)
|
||||
->where(fn($q) => isset($diabetico) ? $q->where('atencao_basica_cadastro_individual.diabetes', DataUtil::getBooleanValueFromStringBoolean($diabetico)) : $q)
|
||||
->where(fn($q) => isset($gestante) ? $q->where('atencao_basica_cadastro_individual.gestante', DataUtil::getBooleanValueFromStringBoolean($gestante)) : $q)
|
||||
->where(fn($q) => isset($aleitamentoMaterno) ? $q->where('atencao_basica_atendimento_individual.aleitamento_materno_id', $aleitamentoMaterno) : $q)
|
||||
->where(fn($q) => isset($localAtendimento) ? $q->where('atencao_basica_atendimento_individual.local_atendimento_id', $localAtendimento) : $q)
|
||||
->where(fn($q) => isset($vacina) ? $q->where('atencao_basica_atendimento_individual.vacinacao', DataUtil::getBooleanValueFromStringBoolean($vacina)) : $q)
|
||||
->where(fn($q) => isset($ciap2) ?
|
||||
$q->whereExists(function($query) use ($ciap2) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('atencao_basica_atendimento_individual_problema_condicao')
|
||||
->whereRaw('atencao_basica_atendimento_individual_problema_condicao.atendimento_individual_id = atencao_basica_atendimento_individual.id')
|
||||
->where('atencao_basica_atendimento_individual_problema_condicao.ciap_id', $ciap2['id']);
|
||||
})
|
||||
: $q
|
||||
)
|
||||
->where(fn($q) => isset($cid) ?
|
||||
$q->whereExists(function($query) use ($cid) {
|
||||
$query->select(DB::raw(1))
|
||||
->from('atencao_basica_atendimento_individual_problema_condicao')
|
||||
->whereRaw('atencao_basica_atendimento_individual_problema_condicao.atendimento_individual_id = atencao_basica_atendimento_individual.id')
|
||||
->where('atencao_basica_atendimento_individual_problema_condicao.cid_id', $cid['id']);
|
||||
})
|
||||
: $q
|
||||
)
|
||||
->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_atendimento_individual.equipe_id')
|
||||
->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id')
|
||||
->join('cadastro_paciente', 'cadastro_paciente.id', 'atencao_basica_atendimento_individual.paciente_id')
|
||||
->join('cadastro_cidadao as cidadao_paciente', 'cidadao_paciente.id', 'cadastro_paciente.cidadao_id')
|
||||
->join('cadastro_usuario', 'cadastro_usuario.id', 'atencao_basica_atendimento_individual.usuario_id')
|
||||
->join('cadastro_cidadao as cidadao_usuario', 'cidadao_usuario.id', 'cadastro_usuario.cidadao_id')
|
||||
->join('cadastro_sexo', 'cadastro_sexo.id', 'cidadao_paciente.sexo_id')
|
||||
->leftJoin('atencao_basica_cadastro_individual', 'atencao_basica_cadastro_individual.paciente_id', 'atencao_basica_atendimento_individual.paciente_id')
|
||||
->leftJoin('atencao_basica_cadastro_aleitamento_materno', 'atencao_basica_cadastro_aleitamento_materno.id', 'atencao_basica_atendimento_individual.aleitamento_materno_id')
|
||||
->join('atencao_basica_local_atendimento', 'atencao_basica_local_atendimento.id', 'atencao_basica_atendimento_individual.local_atendimento_id')
|
||||
->get();
|
||||
|
||||
$registros = $registros->map(function($item) use ($idadeMinima, $idadeMaxima) {
|
||||
$idade = self::getIdadeCalculada($item->data_nascimento);
|
||||
$item->ciap = collect(explode('#', $item->ciap))->filter();
|
||||
$item->cid = collect(explode('#', $item->cid))->filter();
|
||||
|
||||
if (isset($idadeMinima) && ($idade->y < $idadeMinima)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (isset($idadeMaxima) && ($idade->y > $idadeMaxima)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$item->idade = "{$idade->y} (A) {$idade->m} (M) {$idade->d} (D)";
|
||||
$item->hipertenso = self::getValorBoleano($item->hipertenso);
|
||||
$item->diabetico = self::getValorBoleano($item->diabetico);
|
||||
$item->gestante = self::getValorBoleano($item->gestante);
|
||||
$item->vacina = self::getValorBoleano($item->vacina);
|
||||
|
||||
$item->condicaoAvaliada = $item->ciap->merge($item->cid);
|
||||
|
||||
return $item;
|
||||
|
||||
})->filter();
|
||||
|
||||
$idsAtendimentoIndividual = $registros->pluck('atendimento_individual_id');
|
||||
$condicoes = self::getCondicoesDoencasRastreamentosOutros($params, $idsAtendimentoIndividual,);
|
||||
|
||||
$registros = $registros->map(function($item) use($condicoes, $condicaoAvaliadaParametro, $doencaTransmissivel, $rastreamento, &$totalizadores) {
|
||||
$condicoesFiltradas = $condicoes->where('atendimento_individual_id', $item->atendimento_individual_id);
|
||||
$unidadeId = $item->unidade_id;
|
||||
|
||||
$exibirRegistroComCondicaoAvaliada = isset($condicaoAvaliadaParametro) ? $condicoesFiltradas->contains('condicao_avaliada_id', $condicaoAvaliadaParametro['id']) : true;
|
||||
$exibirRegistroComDoencaTransmissivel = isset($doencaTransmissivel) ? $condicoesFiltradas->contains('doenca_transmissivel_id', $doencaTransmissivel['id']) : true;
|
||||
$exibirRegistroComRastreamento = isset($rastreamento) ? $condicoesFiltradas->contains('rastreamento_id', $rastreamento['id']) : true;
|
||||
|
||||
if(in_array(false, [$exibirRegistroComCondicaoAvaliada, $exibirRegistroComDoencaTransmissivel, $exibirRegistroComRastreamento])) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!isset($totalizadores['unidades'][$unidadeId])) {
|
||||
$totalizadores['unidades'][$unidadeId] = 1;
|
||||
} else {
|
||||
$totalizadores['unidades'][$unidadeId]++;
|
||||
}
|
||||
|
||||
if (!isset($totalizadores['profissionais'][$item->profissional])) {
|
||||
$totalizadores['profissionais'][$item->profissional] = 1;
|
||||
} else {
|
||||
$totalizadores['profissionais'][$item->profissional]++;
|
||||
}
|
||||
|
||||
if (!isset($totalizadores['locaisAtendimento'][$item->local_atendimento])) {
|
||||
$totalizadores['locaisAtendimento'][$item->local_atendimento] = 1;
|
||||
} else {
|
||||
$totalizadores['locaisAtendimento'][$item->local_atendimento]++;
|
||||
}
|
||||
|
||||
$item->condicaoAvaliada = $item->condicaoAvaliada->merge($condicoesFiltradas->pluck('descricao'));
|
||||
|
||||
$item->condicaoAvaliada = $item->condicaoAvaliada->isNotEmpty() ? $item->condicaoAvaliada->implode(', ') : '-';
|
||||
|
||||
return $item;
|
||||
})->filter();
|
||||
|
||||
return [
|
||||
"registros" => [...$registros],
|
||||
"totalizadores" => [
|
||||
"registros" => count($registros),
|
||||
"unidades" => count($totalizadores["unidades"]),
|
||||
"profissionais" => count($totalizadores["profissionais"]),
|
||||
"locaisAtendimento" => count($totalizadores["locaisAtendimento"]),
|
||||
]
|
||||
];
|
||||
}
|
||||
|
||||
private static function getSexos() {
|
||||
return DB::table('cadastro_sexo')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
private static function getCondicoesDoencasRastreamentosOutros($params, $idsAtendimentoIndividual) {
|
||||
$registros = collect([]);
|
||||
|
||||
$condicoesAvaliadas = DB::table('atencao_basica_atendimento_individual_condicao_avaliada')
|
||||
->select(
|
||||
'atencao_basica_atendimento_individual.id as atendimento_individual_id',
|
||||
'atencao_basica_cadastro_condicao_avaliada.descricao',
|
||||
'atencao_basica_atendimento_individual_condicao_avaliada.condicao_avaliada_id',
|
||||
)
|
||||
->whereIn('atencao_basica_atendimento_individual.id', $idsAtendimentoIndividual)
|
||||
->leftJoin('atencao_basica_cadastro_condicao_avaliada', 'atencao_basica_cadastro_condicao_avaliada.id', 'atencao_basica_atendimento_individual_condicao_avaliada.condicao_avaliada_id')
|
||||
->leftJoin('atencao_basica_atendimento_individual', 'atencao_basica_atendimento_individual.id', 'atencao_basica_atendimento_individual_condicao_avaliada.atendimento_individual_id')
|
||||
->get();
|
||||
|
||||
$doencasTransmissiveis = DB::table('atencao_basica_atendimento_individual_doenca_transmissivel')
|
||||
->select(
|
||||
'atencao_basica_atendimento_individual.id as atendimento_individual_id',
|
||||
'atencao_basica_cadastro_doenca_transmissivel.descricao',
|
||||
'atencao_basica_atendimento_individual_doenca_transmissivel.doenca_transmissivel_id'
|
||||
)
|
||||
->whereIn('atencao_basica_atendimento_individual.id', $idsAtendimentoIndividual)
|
||||
->leftJoin('atencao_basica_cadastro_doenca_transmissivel', 'atencao_basica_cadastro_doenca_transmissivel.id', 'atencao_basica_atendimento_individual_doenca_transmissivel.doenca_transmissivel_id')
|
||||
->leftJoin('atencao_basica_atendimento_individual', 'atencao_basica_atendimento_individual.id', 'atencao_basica_atendimento_individual_doenca_transmissivel.atendimento_individual_id')
|
||||
->get();
|
||||
|
||||
$rastreamentos = DB::table('atencao_basica_atendimento_individual_rastreamento')
|
||||
->select(
|
||||
'atencao_basica_atendimento_individual.id as atendimento_individual_id',
|
||||
'atencao_basica_cadastro_rastreamento.descricao',
|
||||
'atencao_basica_atendimento_individual_rastreamento.rastreamento_id'
|
||||
)
|
||||
->whereIn('atencao_basica_atendimento_individual.id', $idsAtendimentoIndividual)
|
||||
->leftJoin('atencao_basica_cadastro_rastreamento', 'atencao_basica_cadastro_rastreamento.id', 'atencao_basica_atendimento_individual_rastreamento.rastreamento_id')
|
||||
->leftJoin('atencao_basica_atendimento_individual', 'atencao_basica_atendimento_individual.id', 'atencao_basica_atendimento_individual_rastreamento.atendimento_individual_id')
|
||||
->get();
|
||||
|
||||
$registros->push(...$condicoesAvaliadas, ...$doencasTransmissiveis, ...$rastreamentos);
|
||||
|
||||
return $registros;
|
||||
}
|
||||
|
||||
private static function getIdadeCalculada($dataNascimento) {
|
||||
$dataNascimento = Carbon::createFromFormat('d/m/Y', $dataNascimento);
|
||||
$dataAtual = Carbon::now();
|
||||
|
||||
return $dataAtual->diff($dataNascimento);
|
||||
}
|
||||
|
||||
private static function getValorBoleano($valor) {
|
||||
if(!isset($valor)) {
|
||||
return '-';
|
||||
}
|
||||
|
||||
return $valor ? 'Sim' : 'Não';
|
||||
}
|
||||
|
||||
private static function getOptionsBoolean() {
|
||||
return [
|
||||
[
|
||||
"descricao" => "Sim",
|
||||
"valor" => true,
|
||||
],
|
||||
[
|
||||
"descricao" => "Não",
|
||||
"valor" => false,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
private static function getCondicoesAvaliadas() {
|
||||
return DB::table('atencao_basica_cadastro_condicao_avaliada')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
private static function getDoencasTransmissiveis() {
|
||||
return DB::table('atencao_basica_cadastro_doenca_transmissivel')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
private static function getRastreamentos() {
|
||||
return DB::table('atencao_basica_cadastro_rastreamento')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
private static function getAleitamentosMaterno() {
|
||||
return DB::table('atencao_basica_cadastro_aleitamento_materno')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
private static function getAnosCompetencia() {
|
||||
$anosAtendimento = DB::table('atencao_basica_atendimento_individual')
|
||||
->selectRaw('YEAR(data_usuario_responsavel) as ano')
|
||||
->distinct('ano')
|
||||
->pluck('ano')
|
||||
->filter();
|
||||
|
||||
return $anosAtendimento;
|
||||
}
|
||||
|
||||
private static function getMesesCompetencia($ano) {
|
||||
$meses = [];
|
||||
|
||||
$registros = DB::table('atencao_basica_atendimento_individual')
|
||||
->selectRaw('MONTH(data_usuario_responsavel) as mes')
|
||||
->whereYear('data_usuario_responsavel', $ano)
|
||||
->distinct('mes')
|
||||
->pluck('mes')
|
||||
->filter();
|
||||
|
||||
foreach ($registros as $mes) {
|
||||
$meses[] = $mes;
|
||||
}
|
||||
|
||||
return $meses;
|
||||
}
|
||||
|
||||
private static function getUnidades($params) {
|
||||
return DB::table('atencao_basica_atendimento_individual')
|
||||
->select(
|
||||
'cadastro_unidade.id as id',
|
||||
'cadastro_unidade.nome_fantasia as descricao'
|
||||
)
|
||||
->whereYear('data_usuario_responsavel', $params['competencia']['ano'])
|
||||
->whereMonth('data_usuario_responsavel', $params['competencia']['mes'])
|
||||
->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_atendimento_individual.equipe_id')
|
||||
->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id')
|
||||
->distinct('cadastro_unidade.id')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
private static function getProfissionais($params) {
|
||||
$unidade = $params['unidade'];
|
||||
|
||||
return DB::table('atencao_basica_atendimento_individual')
|
||||
->select(
|
||||
'atencao_basica_atendimento_individual.usuario_id as id',
|
||||
'cadastro_cidadao.nome as descricao'
|
||||
)
|
||||
->whereYear('data_usuario_responsavel', $params['competencia']['ano'])
|
||||
->whereMonth('data_usuario_responsavel', $params['competencia']['mes'])
|
||||
->where(fn($q) => isset($unidade) ? $q->where('cadastro_unidade.id', $unidade) : $q)
|
||||
->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_atendimento_individual.equipe_id')
|
||||
->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id')
|
||||
->join('cadastro_usuario', 'cadastro_usuario.id', 'atencao_basica_atendimento_individual.usuario_id')
|
||||
->join('cadastro_cidadao', 'cadastro_cidadao.id', 'cadastro_usuario.cidadao_id')
|
||||
->groupBy('id')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
|
||||
private static function getLocaisAtendimento($params) {
|
||||
$unidade = $params['unidade'];
|
||||
$profissional = $params['profissional'];
|
||||
|
||||
return DB::table('atencao_basica_atendimento_individual')
|
||||
->select(
|
||||
'atencao_basica_atendimento_individual.local_atendimento_id as id',
|
||||
'atencao_basica_local_atendimento.descricao as descricao',
|
||||
)
|
||||
->whereYear('data_usuario_responsavel', $params['competencia']['ano'])
|
||||
->whereMonth('data_usuario_responsavel', $params['competencia']['mes'])
|
||||
->where(fn($q) => isset($unidade) ? $q->where('cadastro_unidade.id', $unidade) : $q)
|
||||
->where(fn($q) => isset($profissional) ? $q->where('usuario_id', $profissional) : $q)
|
||||
->join('atencao_basica_parametrizacao_equipe', 'atencao_basica_parametrizacao_equipe.id', 'atencao_basica_atendimento_individual.equipe_id')
|
||||
->join('cadastro_unidade', 'cadastro_unidade.id', 'atencao_basica_parametrizacao_equipe.unidade_id')
|
||||
->join('atencao_basica_local_atendimento', 'atencao_basica_local_atendimento.id', 'atencao_basica_atendimento_individual.local_atendimento_id')
|
||||
->groupBy('id')
|
||||
->orderBy('descricao')
|
||||
->get();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user