All pastes #961184 Raw Edit

Unnamed

public text v1 · immutable
#961184 ·published 2008-03-28 18:57 UTC
rendered paste body
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;