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;