CREATE PROCEDURE SP_EXAMEFAIXA(
IDEMPRESA INTEGER DEFAULT NULL,
IDSETOR INTEGER DEFAULT NULL,
IDFUNCAO INTEGER DEFAULT NULL)
RETURNS(
FAIXAETARIA VARCHAR(5000) CHARACTER SET NONE,
EXAME VARCHAR(5000) CHARACTER SET NONE)
AS
DECLARE VARIABLE TIPOFAIXA INTEGER;
DECLARE VARIABLE IDADEI INTEGER;
DECLARE VARIABLE IDADEF INTEGER;
DECLARE VARIABLE IDFAIXAETARIA INTEGER;
DECLARE VARIABLE IDPROGRAMAPCMSO INTEGER;
DECLARE VARIABLE IDGRUPOPCMSO INTEGER;
DECLARE VARIABLE SEXO CHAR(1);
DECLARE VARIABLE IDEXAME INTEGER;
DECLARE VARIABLE DESCEXAME VARCHAR(5000);
DECLARE VARIABLE CONSULTA VARCHAR(200);
DECLARE VARIABLE TIPODEEXAME VARCHAR(200);
DECLARE VARIABLE DESCLITERIOS VARCHAR(5000);
DECLARE VARIABLE REAVALIA INTEGER;
BEGIN
FOR
SELECT
"faixaetariapcmso"."idfaixaetariapcmso",
"faixaetariapcmso"."idadeini",
"faixaetariapcmso"."idadefim",
"faixaetariapcmso"."tipofaixa",
"programapcmso"."idprogramapcmso"
FROM
"pcmso"
INNER JOIN "programapcmso" ON ("programapcmso"."pcmso" = "pcmso"."idpcmso")
INNER JOIN "faixaetariapcmso" ON ("faixaetariapcmso"."pcmso" = "pcmso"."idpcmso")
WHERE
"pcmso"."empresa" = :IDEMPRESA
AND "pcmso"."statuspcmso" = 'A'
AND "programapcmso"."setor" = :IDSETOR
AND "programapcmso"."funcao" = :IDFUNCAO
ORDER BY
2,3,"faixaetariapcmso"."tipofaixa"
INTO :IDFAIXAETARIA,:IDADEI,:IDADEF,:TIPOFAIXA,:IDPROGRAMAPCMSO
DO
BEGIN
FAIXAETARIA=NULL;
IF (TIPOFAIXA = 0) THEN
BEGIN
FAIXAETARIA='Menor ou igual a ' || IDADEF || ' anos';
END
IF (TIPOFAIXA = 1) THEN
BEGIN
FAIXAETARIA='Idade entre ' || IDADEI || ' e ' || IDADEF || ' anos';
END
IF (TIPOFAIXA = 2) THEN
BEGIN
FAIXAETARIA='Maior ou igual a ' || IDADEI || ' anos';
END
IDGRUPOPCMSO=NULL;
EXAME=NULL;
FOR
SELECT
"grupopcmso"."idgrupopcmso",
"grupopcmso"."sexo",
"exame"."idexame",
"exame"."exame" || TRIM(CASE "grupopcmso"."sexo"
WHEN 'T' THEN ''
WHEN 'M' THEN '*'
WHEN 'F' THEN '**'
ELSE ''
END) || ', ' || "exameprograma"."periodicidade" || ' meses'
FROM
"exameprograma"
INNER JOIN "exame" ON ("exame"."idexame" = "exameprograma"."exame")
INNER JOIN "grupopcmso" ON ("grupopcmso"."idgrupopcmso" = "exameprograma"."grupopcmso")
WHERE
"grupopcmso"."faixaetaria" = :IDFAIXAETARIA
AND "grupopcmso"."programapcmso" = :IDPROGRAMAPCMSO
INTO :IDGRUPOPCMSO,:SEXO,:IDEXAME,:DESCEXAME
DO
BEGIN
IF (NOT EXISTS(SELECT "exameconsulta"."idexameconsulta" FROM "exameconsulta" WHERE "exameconsulta"."exame" = :IDEXAME AND "exameconsulta"."grupopcmso" = :IDGRUPOPCMSO)) THEN
BEGIN
IF (EXAME IS NULL) THEN
BEGIN
EXAME=DESCEXAME || ';';
END
ELSE
BEGIN
EXAME=EXAME || '
' || DESCEXAME || ';';
END
END
ELSE
BEGIN
DESCLITERIOS=NULL;
FOR
SELECT
"consulta"."consulta",
"exameconsulta"."reavaliacao",
CASE "exameconsulta"."tipoexameconsulta"
WHEN '0' THEN 'ADICIONAR'
WHEN '1' THEN 'DISPENSAR'
WHEN '2' THEN 'REAVALIAÇÃO'
END
FROM
"exameconsulta"
INNER JOIN "consulta" ON ("consulta"."idconsulta" = "exameconsulta"."consulta")
WHERE
"exameconsulta"."exame" = :IDEXAME
AND "exameconsulta"."grupopcmso" = :IDGRUPOPCMSO
INTO :CONSULTA,:REAVALIA,:TIPODEEXAME
DO
BEGIN
TIPODEEXAME=TRIM(TIPODEEXAME);
IF (DESCLITERIOS IS NULL) THEN
BEGIN
DESCLITERIOS=CONSULTA || ': ' || TIPODEEXAME || IIf(REAVALIA IS NULL,'','(' || REAVALIA || ' Meses)');
END
ELSE
BEGIN
DESCLITERIOS=DESCLITERIOS || ',' || CONSULTA || ': ' || TIPODEEXAME || IIf(REAVALIA IS NULL,'','(' || REAVALIA || ' Meses)');
END
END
IF (EXAME IS NULL) THEN
BEGIN
EXAME=DESCEXAME || ' {' || DESCLITERIOS || '};';
END
ELSE
BEGIN
EXAME=EXAME || '
' || DESCEXAME || ' {' || DESCLITERIOS || '};';
END
END
END
SUSPEND;
END
END;