create or alter procedure REL_BI_ATENDIMENTO (
UNIDADE integer default 0,
DATAINICIAL date default null,
DATAFINAL date default null,
ACESSO varchar(300) default ‘’,
ACAO varchar(300) default ‘’,
ATENDIMENTO varchar(300) default ‘’,
ENCAMINHAMENTO varchar(300) default ‘’)
returns (
COD_ATENDIMENTO integer,
COD_UNIDADE integer,
NME_UNIDADE varchar(100),
DATA date,
COD_USU varchar(32),
COD_PESSOA integer,
NME_PESSOA varchar(100),
DAT_NASCIMENTO date,
IDADE integer,
COD_USU_PRE varchar(32),
HORA_INICIO time,
HORA_ATENDIMENTO time,
DESCRICAO varchar(30000),
PROVIDENCIAS varchar(3000),
COD_BAIRRO_PESSOA integer,
COD_DOMICILIO integer,
VIOLENCIA_IDADE integer,
VIOLENCIA_ONDEOCORREU varchar(100),
VIOLENCIA_BO varchar(20),
VIOLENCIA_AGRESSOR varchar(100),
VIOLENCIA_IDADEAGRESSOR integer,
VIOLENCIA_ETNIAAGRESSOR integer,
VIOLENCIA_ESCOLARIDADEAGRESSOR integer,
VIOLENCIA_OCUPACAOAGRESSOR varchar(100),
VIOLENCIA_RELACAO varchar(100),
VISITADOMICILIAR varchar(3),
TIP_UNIDADE varchar(20))
AS
declare variable retornar varchar(3);
begin
for select COD_ATENDIMENTO, COD_UNIDADE, DATA, COD_USU, COD_PESSOA, COD_USU_PRE,
HORA_INICIO, HORA_ATENDIMENTO, DESCRICAO, PROVIDENCIAS, COD_BAIRRO_PESSOA,
COD_DOMICILIO, VIOLENCIA_IDADE, VIOLENCIA_ONDEOCORREU, VIOLENCIA_BO,
VIOLENCIA_AGRESSOR, VIOLENCIA_IDADEAGRESSOR, VIOLENCIA_ETNIAAGRESSOR,
VIOLENCIA_ESCOLARIDADEAGRESSOR, VIOLENCIA_OCUPACAOAGRESSOR,
VIOLENCIA_RELACAO, VISITADOMICILIAR, TIP_UNIDADE
from atendimentos
where atendimentos.data between :datainicial and :datafinal
and :unidade in (atendimentos.cod_unidade,0)
into COD_ATENDIMENTO, COD_UNIDADE, DATA, COD_USU, COD_PESSOA, COD_USU_PRE,
HORA_INICIO, HORA_ATENDIMENTO, DESCRICAO, PROVIDENCIAS, COD_BAIRRO_PESSOA,
COD_DOMICILIO, VIOLENCIA_IDADE, VIOLENCIA_ONDEOCORREU, VIOLENCIA_BO,
VIOLENCIA_AGRESSOR, VIOLENCIA_IDADEAGRESSOR, VIOLENCIA_ETNIAAGRESSOR,
VIOLENCIA_ESCOLARIDADEAGRESSOR, VIOLENCIA_OCUPACAOAGRESSOR,
VIOLENCIA_RELACAO, VISITADOMICILIAR, TIP_UNIDADE
do begin
retornar = ‘NAO’;
if (acesso <> '') then begin
acesso = ',' || acesso || ',';
if (exists(select * from atendimentos_acessos
where cod_atendimento = :cod_atendimento
and :acesso containing ',' || cod_config || ',')) then
retornar = 'SIM';
else
retornar = 'NAO';
end
if (acao <> '') then begin
acao = ',' || acao || ',';
if (exists(select * from atendimentos_acoes
where cod_atendimento = :cod_atendimento
and :acao containing ',' || cod_config || ',')) then
retornar = 'SIM';
else
retornar = 'NAO';
end
if (atendimento <> '') then begin
atendimento = ',' || atendimento || ',';
if (exists(select * from atendimentos_tipos
where cod_atendimento = :cod_atendimento
and :atendimento containing ',' || cod_config || ',')) then
retornar = 'SIM';
else
retornar = 'NAO';
end
if (encaminhamento <> '') then begin
encaminhamento = ',' || encaminhamento || ',';
if (exists(select * from atendimentos_encaminhamentos
where cod_atendimento = :cod_atendimento
and :encaminhamento containing ',' || cod_config || ',')) then
retornar = 'SIM';
else
retornar = 'NAO';
end
if (retornar = 'SIM') then begin
select NME_PESSOA, dat_nascimento
from pessoas
where cod_pessoa = :cod_pessoa
into NME_PESSOA, dat_nascimento;
select NME_UNIDADE from unidade
where cod_unidade = :NME_UNIDADE
into nme_unidade;
idade = datediff(year,:dat_nascimento, cast('now' as date));
if (idade < 0) then idade = 0;
suspend;
end
end
end