CREATE OR REPLACE
FUNCTION TRADUCAO(
   P_LINGUA   IN VARCHAR,
   P_ORIGINAL IN VARCHAR,
   P_ESPANHOL IN VARCHAR,
   P_INGLES   IN VARCHAR) RETURN VARCHAR IS
BEGIN
   IF(P_LINGUA = 'E') THEN
      RETURN(P_ESPANHOL);
   ELSE
      IF(P_LINGUA = 'I') THEN
         RETURN(P_INGLES);
      ELSE
         RETURN(P_ORIGINAL);
      END IF;
   END IF;
END;
/



CREATE OR REPLACE
FUNCTION CLASSIFICAGORDU(
   P_IDSEXOPACI IN VARCHAR,
   P_IDADEANO   IN NUMBER,
   P_PERCENT    IN NUMBER,
   P_IDIOMA     IN VARCHAR) RETURN VARCHAR
AS
V_CLASSIF VARCHAR2(200) := '';
BEGIN
   IF P_IDADEANO < 18 THEN
      IF P_IDSEXOPACI = 'M' THEN
         IF (P_PERCENT <= 6.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente baixa','','');
         END IF;
         IF (P_PERCENT > 6.0) AND (P_PERCENT <= 10.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixa','','');
         END IF;
         IF (P_PERCENT > 10.0) AND (P_PERCENT <= 20.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequada','','');
         END IF;
         IF (P_PERCENT > 20.0) AND (P_PERCENT <= 25.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Moderadamente alta','','');
         END IF;
         IF (P_PERCENT > 25.0) AND (P_PERCENT <= 31.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Alta','','');
         END IF;
         IF (P_PERCENT > 31.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente alta','','');
         END IF;
      ELSE
         IF (P_PERCENT <= 12.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente baixa','','');
         END IF;
         IF (P_PERCENT > 12.0) AND (P_PERCENT <= 15.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixa','','');
         END IF;
         IF (P_PERCENT > 15.0) AND (P_PERCENT <= 25.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequada','','');
         END IF;
         IF (P_PERCENT > 25.0) AND (P_PERCENT <= 30.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Moderadamente alta','','');
         END IF;
         IF (P_PERCENT > 30.0) AND (P_PERCENT <= 36.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Alta','','');
         END IF;
         IF (P_PERCENT > 36.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente alta','','');
         END IF;
      END IF;
   ELSE
      IF P_IDSEXOPACI = 'M' THEN 
         IF (P_PERCENT <= 3.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente baixa','','');
         END IF;
         IF (P_PERCENT > 3.0) AND (P_PERCENT <= 10.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixa','','');
         END IF;
         IF (P_PERCENT > 10.0) AND (P_PERCENT <= 15.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequada','','');
         END IF;
         IF (P_PERCENT > 15.0) AND (P_PERCENT <= 20.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Moderadamente alta','','');
         END IF;
         IF (P_PERCENT > 20.0) AND (P_PERCENT <= 25.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Alta','','');
         END IF;
         IF (P_PERCENT > 25.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente alta','','');
         END IF;
      ELSE
         IF (P_PERCENT <= 12.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente baixa','','');
         END IF;
         IF (P_PERCENT > 12.0) AND (P_PERCENT <= 14.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixa','','');
         END IF;
         IF (P_PERCENT > 14.0) AND (P_PERCENT <= 18.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequada','','');
         END IF;
         IF (P_PERCENT > 18.0) AND (P_PERCENT <= 30.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Moderadamente alta','','');
         END IF;
         IF (P_PERCENT > 30.0) AND (P_PERCENT <= 35.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Alta','','');
         END IF;
         IF (P_PERCENT > 35.0) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Excessivamente alta','','');
         END IF;
      END IF;
   END IF;
   RETURN(V_CLASSIF);
END;
/


CREATE OR REPLACE
FUNCTION FAIXAIDADE(
   P_IDADEANO    IN NUMBER,
   P_IDADEMES    IN NUMBER,
   P_IDADEANOINI IN NUMBER,
   P_IDADEMESINI IN NUMBER,
   P_IDADEANOFIN IN NUMBER,
   P_IDADEMESFIN IN NUMBER) RETURN NUMBER
IS
FAIXA NUMBER := 2;
BEGIN
   IF (P_IDADEANO < P_IDADEANOINI) OR ((P_IDADEANO = P_IDADEANOINI) AND (P_IDADEMES < P_IDADEMESINI)) THEN /*idade abaixo da faixa*/
      FAIXA := -1;
   END IF;
   IF (((P_IDADEANO = P_IDADEANOINI)AND(P_IDADEMES >= P_IDADEMESINI))OR(P_IDADEANO > P_IDADEANOINI)) AND
      (((P_IDADEANO = P_IDADEANOFIN)AND(P_IDADEMES <= P_IDADEMESFIN))OR(P_IDADEANO < P_IDADEANOFIN)) THEN /*idade dentro da faixa*/
      FAIXA := 0;
   END IF;
   IF (P_IDADEANO > P_IDADEANOFIN)OR((P_IDADEANO = P_IDADEANOFIN)AND(P_IDADEMES > P_IDADEMESFIN)) THEN /*idade acima da faixa*/
      FAIXA := 1;
   END IF;
   RETURN(FAIXA);
END;
/


create or replace
PROCEDURE CALCULA_METODOS_ANT(
   P_CDFILIAL     IN PACIENTE.CDFILIAL%TYPE,
   P_CDPACIENTE   IN PACIENTE.CDPACIENTE%TYPE,
   P_DTCONSPACI   IN CONSPACI.DTCONSPACI%TYPE,
   P_IDADEANO     IN VARCHAR,
   P_IDADEMES     IN VARCHAR,
   P_CDAVALIA     IN VARCHAR,
   P_IDIOMA      IN VARCHAR)
AS
   V_PESO       NUMBER := 0;
   V_IDSEXOPACI VARCHAR2(1);
   V_ALTURA	    NUMBER := 0;
   V_PESOTEOMIM NUMBER := 0; 
   V_PESOTEOMED NUMBER := 0;
   V_PESOTEOMAX NUMBER := 0;
   V_RESULT     NUMBER := 0;
   V_CLASSIF    VARCHAR2(200);
   V_PI         NUMBER :=3.1415926535897932385;
   V_VRTABDIET_MED NUMBER := 0;
   V_VRTABDIET_MIN NUMBER := 0;
   V_VRTABDIET_MAX NUMBER := 0;
   V_CDPERCENTIL  VARCHAR2(50):='';
   V_VRPERCENTILMENOR NUMBER:=0;
   V_NMPERCENTILMENOR VARCHAR2(50):='';
   V_CDPERCENTILMENOR VARCHAR2(50):='';
   V_NMREFEMENOR      VARCHAR2(50):='';
   V_CDREFEMENOR      VARCHAR2(50):='';
   V_VRPERCENTILMAIOR NUMBER:=0;
   V_NMPERCENTILMAIOR VARCHAR2(50):='';
   V_CDPERCENTILMAIOR VARCHAR2(50):='';
   V_NMRFEMAIOR       VARCHAR2(50):='';
   V_CDREFEMAIOR      VARCHAR2(50):='';
   TYPE T_INDICE IS TABLE OF VARCHAR(32) INDEX BY VARCHAR(2);
   V_DADOSIMCGEST  T_INDICE;
   V_PCTATUAL NUMBER := 0;
   V_VRTABDIET NUMBER := 0;
   V_PCT NUMBER := 0;
   V_CB NUMBER := 0;
   V_CDTABELA VARCHAR2(50):='';
   V_NMREFE VARCHAR2(50):='';
   V_CMB NUMBER :=0;
   V_NMTABELA VARCHAR2(50):='';
   V_CDREFE VARCHAR2(50):='';
   V_NMREFEMAIOR VARCHAR2(50):='';
   V_AMB NUMBER := 0;
   V_PUNHO NUMBER :=0;
   V_FAIXA VARCHAR2(50) :='';
   V_COMPLEICAO VARCHAR2(50) :='';
   V_NCLASSIF VARCHAR2(50) := '';
   V_ATUPESIDE VARCHAR2(50) :='';
   V_VRPESOOSINI NUMBER :=0;
   V_VRPESOOSFIN NUMBER :=0;
   V_RCQ  NUMBER :=0;
   V_QUADRIL  NUMBER :=0;
   V_CINTURA  NUMBER :=0;
   V_DSRESUAVAL VARCHAR2(200);
   V_PESOINF NUMBER :=0;
   V_VRPESOTABE NUMBER :=0;
   V_RESULTPESO NUMBER :=0;
   V_ALTURAINF NUMBER :=0;
   V_PESOTABE NUMBER :=0;
   V_VRALTUTABE NUMBER :=0;
   V_RESULTALT NUMBER :=0;
   V_VRPESO NUMBER :=0;
   V_RESUEUTRO NUMBER :=0;
   V_PERCEF NUMBER := 0;
   V_PCB NUMBER := 0;
   V_PCSE NUMBER := 0;
   V_PCSI NUMBER := 0;
   V_SOMAPREGA NUMBER := 0;
   V_VRPREGAS NUMBER := 0;
   V_GORDURA NUMBER := 0;
   V_GORDURAIDEAL VARCHAR2(50) := '';
   V_IMCAMPUT NUMBER := 0;
   V_PESOCORR NUMBER := 0;
   V_ALT NUMBER := 0;
   V_PESOANT NUMBER := 0;
   V_ADEQ    NUMBER    := 0;
   V_PESOOSSINI NUMBER  := 0;
   V_TORAX NUMBER := 0;
   V_RESULT1 NUMBER := 0;
   V_RESULT2 NUMBER := 0;
   V_PERCENT NUMBER := 0;
   V_PESOMF NUMBER := 0;
   V_PESOATUAL NUMBER := 0;
   V_PESOUSUAL NUMBER := 0;
   V_TEMPO VARCHAR2(50) := '';
   V_PELOS VARCHAR2(50) := '';
   V_MAMAGEN VARCHAR2(50) := '';
   V_RESULTPELOS VARCHAR2(50) := '';
   V_RESULTMAMAGEN VARCHAR2(50) := '';
   V_DENSIDADE NUMBER := 0;
   V_BI NUMBER := 0;
   V_TR NUMBER := 0;
   V_SB NUMBER := 0;
   V_SI NUMBER := 0;
   V_CX NUMBER := 0;
   V_PESOGORDO NUMBER := 0;
   V_MASSAMAGRA NUMBER := 0;
   V_PORCMASMAG NUMBER := 0;
   V_PESOIDEAL NUMBER := 0;
   V_PESOEXC NUMBER  := 0;
   V_PORCGORDU NUMBER :=0;
   V_IDADE NUMBER :=0;
   V_DSCONTRESU VARCHAR2(50) :='';
   V_DESC VARCHAR2(50) :='';
   V_MENOR VARCHAR2(50) :='';
   V_NMPERCENTIL VARCHAR2(50) :='';
   V_CIRCCIN NUMBER  := 0;
   V_CIRCQUAD NUMBER  := 0;
   V_ALTJOE NUMBER  := 0;
   V_CIRCPANT NUMBER  := 0;
   V_PCS NUMBER  := 0;
   V_COMPOSS NUMBER  := 0;
   V_PATU NUMBER  := 0;
   V_PIDEAL NUMBER  := 0;
   V_PUSU NUMBER  := 0;
   V_SUBPES NUMBER  := 0;
   V_EDAN VARCHAR2(50) :='';
   V_EDJO VARCHAR2(50) :='';
   V_EDRC VARCHAR2(50) :='';
   V_EDTO VARCHAR2(50) :='';
   V_MAOINF NUMBER  := 0;
   V_MAOUND NUMBER  := 0;
   V_ANTBRINF NUMBER  := 0;
   V_ANTBRUND NUMBER  := 0;
   V_BROINF NUMBER  := 0;
   V_BROUND NUMBER  := 0;
   V_PEINF NUMBER  := 0;
   V_PEUND NUMBER  := 0;
   V_PABJINF NUMBER  := 0;
   V_PABJUND NUMBER  := 0;
   V_PACJINF NUMBER  := 0;
   V_PACJUND NUMBER  := 0;
   V_PERIINF NUMBER  := 0;
   V_PERIUND NUMBER  := 0;
   V_ID NUMBER  := 0;
   V_CAF NUMBER  := 0;
   V_NAF VARCHAR2(1) :='';
   V_TRIM NUMBER  := 0;
   V_SEMANA NUMBER  := 0;
   V_SEX VARCHAR2(1) := '';
BEGIN
   DELETE RESUAVAL
   WHERE CDFILIAL = P_CDFILIAL
     AND CDPACIENTE = P_CDPACIENTE
     AND DTCONSPACI = P_DTCONSPACI
     AND (CDTBMETOAVAL < '30' OR CDTBMETOAVAL > '36');
   SELECT IDSEXOPACI INTO V_IDSEXOPACI
     FROM PACIENTE
    WHERE CDPACIENTE = P_CDPACIENTE
      AND CDFILIAL = P_CDFILIAL;
   BEGIN
      SELECT TO_NUMBER(MAX(DSINFOAVAL))
        INTO V_PESO
      FROM INFOAVAL
      WHERE CDFILIAL = P_CDFILIAL
        AND CDPACIENTE = P_CDPACIENTE
        AND DTCONSPACI = P_DTCONSPACI
        AND CDTIPODADO = '01';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_PESO := 0;
   END;
   BEGIN
      SELECT TO_NUMBER(MAX(DSINFOAVAL))
        INTO V_ALTURA
      FROM INFOAVAL
      WHERE CDFILIAL = P_CDFILIAL
        AND CDPACIENTE = P_CDPACIENTE
        AND DTCONSPACI = P_DTCONSPACI
        AND CDTIPODADO = '02';
   EXCEPTION
      WHEN NO_DATA_FOUND THEN
         V_ALTURA := 0;
   END;
   FOR C_AVALIA IN(
      SELECT ME.CDTABELACO, TB.CDTBMETOAVAL
        FROM REFEBIBL RE, TBMETOAVAL TB, METOAVAL ME
       WHERE (ME.CDFILIAL(+) = P_CDFILIAL)
         AND (ME.CDPACIENTE(+) = P_CDPACIENTE)
         AND (ME.DTCONSPACI(+) = P_DTCONSPACI)
         AND (ME.CDTBMETOAVAL(+) = TB.CDTBMETOAVAL)
         AND (INSTR(P_CDAVALIA, TB.CDTBMETOAVAL) > 0)
         AND (ME.CDTABELACO = RE.CDREFEBIBL(+))
         AND (TB.IDDETMETODOATIV = 'S')
       ORDER BY TB.IDSEQUMETO
   ) LOOP
      IF C_AVALIA.CDTBMETOAVAL = '00' THEN /*Calcula_IMC*/
         V_RESULT := 0;
         V_CLASSIF := '';
         V_PESOTEOMIM := 18.5 * POWER(V_ALTURA, 2);
         V_PESOTEOMED := 21.7 * POWER(V_ALTURA, 2);
         V_PESOTEOMAX := 24.9 * POWER(V_ALTURA, 2);
         IF (V_PESO <> 0) AND (V_ALTURA <> 0) THEN
            V_RESULT := V_PESO / (POWER(V_ALTURA, 2));
         END IF;
         IF (V_RESULT < 18.5) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixo Peso','','');
         END IF;
         IF (V_RESULT >= 18.5) AND (V_RESULT < 25) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico','','');
         END IF;
         IF (V_RESULT >= 25) AND (V_RESULT < 30) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
         END IF;
         IF (V_RESULT >= 30) THEN
            V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', DECODE(P_IDIOMA, 'P', 'IMC Resultado', ''), LTRIM(TO_CHAR(V_RESULT, '99999.999')));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_RESULT, '99999.999'))
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '01';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', DECODE(P_IDIOMA, 'P', 'IMC Classificacao', ''), V_CLASSIF);
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = V_CLASSIF
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '02';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '05', DECODE(P_IDIOMA, 'P', 'IMC Peso teorico minimo', ''), LTRIM(TO_CHAR(V_PESOTEOMIM, '99999.999'))||' Kg');
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_PESOTEOMIM, '99999.999'))||' Kg'
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '05';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '06', DECODE(P_IDIOMA, 'P', 'IMC Peso teorico medio', ''), LTRIM(TO_CHAR(V_PESOTEOMED, '99999.999'))||' Kg');
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_PESOTEOMED, '99999.999'))||' Kg'
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '06';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '07', DECODE(P_IDIOMA, 'P', 'IMC Peso teorico maximo', ''), LTRIM(TO_CHAR(V_PESOTEOMAX, '99999.999'))||' Kg');
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_PESOTEOMAX, '99999.999'))||' Kg'
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '07';
            END;
         END;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '01' THEN /*Calcula_IMC_Must;*/
         V_VRTABDIET_MED := 0;
         V_VRTABDIET_MIN := 0;
         V_VRTABDIET_MAX := 0;
         SELECT MAX(VRTABEDIET_MED), MAX(VRTABEDIET_MIN), MAX(VRTABEDIET_MAX)
           INTO V_VRTABDIET_MED, V_VRTABDIET_MIN, V_VRTABDIET_MAX
           FROM (SELECT DECODE(V_IDSEXOPACI,
                               1, T.VRSEXOFEMI,
                               0, T.VRSEXOMASC) AS VRTABEDIET_MED
                 FROM TABEVRDIET T
                WHERE (T.CDREFEBIBL  = C_AVALIA.CDTABELACO)
                   AND(T.CDPERCENTIL = '050')
                   AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI)
                   AND(T.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
                ) MEDIO,
                (SELECT DECODE(V_IDSEXOPACI,
                               1, T.VRSEXOFEMI,
                               0, T.VRSEXOMASC) AS VRTABEDIET_MIN
                 FROM TABEVRDIET T
                WHERE (T.CDREFEBIBL  = C_AVALIA.CDTABELACO)
                  AND (T.CDPERCENTIL = '005')
                  AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI)
                  AND (T.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
                ) MIN,
                (SELECT DECODE(V_IDSEXOPACI,
                               1, T.VRSEXOFEMI,
                               0, T.VRSEXOMASC) AS VRTABEDIET_MAX
                 FROM TABEVRDIET T
                WHERE (T.CDREFEBIBL  = C_AVALIA.CDTABELACO)
                  AND (T.CDPERCENTIL = '085')
                  AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI)
                  AND (T.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
                ) MAX;
         V_PESOTEOMIM := V_VRTABDIET_MIN * POWER(V_ALTURA, 2);
         V_PESOTEOMED := V_VRTABDIET_MED * POWER(V_ALTURA, 2);
         V_PESOTEOMAX := V_VRTABDIET_MAX * POWER(V_ALTURA, 2);
         IF (V_PESO <> 0) AND (V_ALTURA <> 0) THEN
            V_RESULT := V_PESO / (V_ALTURA * V_ALTURA);
            IF (V_RESULT < 18.5) THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixo Peso', '','');
            END IF;
            IF (V_RESULT >= 18.5) AND (V_RESULT < 25) THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico', '','');
            END IF;
            IF (V_RESULT >= 25) AND (V_RESULT < 30) THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso', '','');
            END IF;
            IF (V_RESULT >= 30) THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade', '','');
            END IF;
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', DECODE(P_IDIOMA, 'P', 'IMC Resultado', ''), LTRIM(TO_CHAR(V_RESULT, '99999.999')));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_PESOTEOMED, '99999.999'))
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '01';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', DECODE(P_IDIOMA, 'P', 'IMC Classificacao', ''), V_CLASSIF);
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = V_CLASSIF
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '02';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '05', DECODE(P_IDIOMA, 'P', 'IMC Peso teorico minimo', ''), LTRIM(TO_CHAR(V_PESOTEOMIM, '99999.999'))||' Kg');
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_PESOTEOMIM, '99999.999'))||' Kg'
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '05';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '06', DECODE(P_IDIOMA, 'P', 'IMC Peso teorico medio', ''), LTRIM(TO_CHAR(V_PESOTEOMED, '99999.999'))||' Kg');
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_PESOTEOMED, '99999.999'))||' Kg'
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '06';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '07', DECODE(P_IDIOMA, 'P', 'IMC Peso teorico maximo', ''), LTRIM(TO_CHAR(V_PESOTEOMAX, '99999.999'))||' Kg');
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = LTRIM(TO_CHAR(V_PESOTEOMAX, '99999.999'))||' Kg'
                WHERE CDFILIAL = P_CDFILIAL
                  AND CDPACIENTE = P_CDPACIENTE
                  AND DTCONSPACI = P_DTCONSPACI
                  AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND CDSEQUAVAL = '07';
            END;
         END;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '02' THEN  /*Calcula_PCT*/
         V_PCTATUAL := 0;
         V_VRTABDIET:=0;
         V_PCT:= 0;
         V_CLASSIF:='';
         V_CDPERCENTIL :='';
         V_VRPERCENTILMENOR :=0;
         V_NMPERCENTILMENOR :='';
         V_CDPERCENTILMENOR :='';
         V_NMREFEMENOR      :='';
         V_CDREFEMENOR      :='';
         V_VRPERCENTILMAIOR :=0;
         V_NMPERCENTILMAIOR :='';
         V_CDPERCENTILMAIOR :='';
         V_NMRFEMAIOR       :='';
         V_CDREFEMAIOR      :='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
             INTO V_PCTATUAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '04';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCTATUAL := 0;
         END;
         BEGIN
         SELECT NVL(DECODE(V_IDSEXOPACI,
                           '0', VRSEXOMASC,
                           '1', VRSEXOFEMI), 0)
            INTO V_VRTABDIET
         FROM TABEVRDIET
         WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
           AND CDPERCENTIL = '050'
           AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
           AND TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI;
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
             V_VRTABDIET := 0;
          END;
         IF V_VRTABDIET <> 0 THEN
            V_PCT := ((V_PCTATUAL * 100) / V_VRTABDIET);
            IF (TO_NUMBER(P_IDADEANO) > 0) AND (TO_NUMBER(P_IDADEANO) < 75) THEN
               IF (V_PCT > 145) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade Morbida', '','');
               END IF;
               IF (V_PCT > 120) AND (V_PCT <= 145) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade', '','');
               END IF;
               IF (V_PCT > 110) AND (V_PCT <= 120) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso', '','');
               END IF;
               IF (V_PCT > 90) AND (V_PCT <= 110) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofia', '','');
               END IF;
               IF (V_PCT > 80) AND (V_PCT <= 90) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau I', '','');
               END IF;
               IF (V_PCT > 70) AND (V_PCT <= 80) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau II', '','');
               END IF;
               IF (V_PCT > 60) AND (V_PCT <= 70) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau III', '','');
               END IF;
               IF (V_PCT <= 60) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau IV', '','');
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '03', DECODE(P_IDIOMA, 'P', '% PCT Resultado', ''), LTRIM(TO_CHAR(V_PCT, '99999.999'))||' %');
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = LTRIM(TO_CHAR(V_PCT, '99999.999'))||' %'
                      WHERE CDFILIAL = P_CDFILIAL
                        AND CDPACIENTE = P_CDPACIENTE
                        AND DTCONSPACI = P_DTCONSPACI
                        AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                        AND CDSEQUAVAL = '03';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '04', DECODE(P_IDIOMA, 'P', 'PCT Classificacao', ''), V_CLASSIF);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_CLASSIF
                      WHERE CDFILIAL = P_CDFILIAL
                        AND CDPACIENTE = P_CDPACIENTE
                        AND DTCONSPACI = P_DTCONSPACI
                        AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                        AND CDSEQUAVAL = '04';
                  END;
               END;
            END IF;
            V_CLASSIF := '';
            IF V_PCTATUAL <> 0 THEN
            BEGIN
               SELECT MIN(DIET.CDPERCENTIL)
                 INTO V_CDPERCENTIL
                 FROM TABEVRDIET DIET
                WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
                  AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                  AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CDPERCENTIL := NULL;
            END;
                 /* with cdsPesqPer do begin
                      Data := olePercentil[0];
                    end;*/
              BEGIN
               SELECT VRPERCENTIL,NMPERCENTIL, CDPERCENTIL,NMREFEBIBL, CDREFEBIBL
               INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR
                FROM (SELECT MIN(DECODE(V_IDSEXOPACI,
                                 '0', DIET.VRSEXOMASC,
                                 '1', DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                      PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
                 
                 FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
                WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
                  AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
                  AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
                  AND (DECODE(V_IDSEXOPACI, '0', DIET.VRSEXOMASC, '1', DIET.VRSEXOFEMI) >= V_PCTATUAL)
                  AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
                  AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
               group by PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
                  ORDER BY 1)
               WHERE ROWNUM = 1;
               EXCEPTION
               WHEN NO_DATA_FOUND THEN
               V_VRPERCENTILMENOR := 0;
               V_NMPERCENTILMENOR := NULL;
               V_CDPERCENTILMENOR := NULL;
               V_NMREFEMENOR :=NULL;
               V_CDREFEMENOR := NULL;
               END;
               /* with cdsPercentilMenor do begin
                     Data := olePercentil[2];
                  end; */
                BEGIN
               SELECT   VRPERCENTIL,NMPERCENTIL, CDPERCENTIL, NMREFEBIBL, CDREFEBIBL
                 INTO V_VRPERCENTILMAIOR, V_NMPERCENTILMAIOR, V_CDPERCENTILMAIOR, V_NMRFEMAIOR, V_CDREFEMAIOR
                FROM(   
               SELECT MAX(DECODE(V_IDSEXOPACI,
                                 '0', DIET.VRSEXOMASC,
                                 '1', DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                      PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL

                 FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
                WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
                  AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
                  AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
                  AND (DECODE(V_IDSEXOPACI, '0', DIET.VRSEXOMASC, '1', DIET.VRSEXOFEMI) <= V_PCTATUAL)
                  AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
                  AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
               GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1 DESC)
           WHERE ROWNUM = 1;
           EXCEPTION 
           WHEN NO_DATA_FOUND THEN
           V_VRPERCENTILMAIOR := 0;
           V_NMPERCENTILMAIOR := NULL;
           V_CDPERCENTILMAIOR:= NULL;
           V_NMRFEMAIOR:= NULL;
           V_CDREFEMAIOR := NULL;
           END;
              /* with cdsPercentilMaior do begin
                   Data := olePercentil[1];
                 end; */

               IF V_VRPERCENTILMENOR <> '' THEN
                  IF (V_CDPERCENTILMAIOR = '') OR (V_NMPERCENTILMAIOR = V_NMPERCENTILMENOR)THEN
                     V_NMTABELA := V_NMPERCENTILMENOR;
                  ELSE
                     V_NMTABELA := TRADUCAO(P_IDIOMA,'Entre', '','') || V_NMPERCENTILMAIOR || ' - ' || V_NMPERCENTILMENOR;
                  END IF;
                  IF V_CDPERCENTILMAIOR <> '' THEN
                     V_CDTABELA := V_CDPERCENTILMAIOR;
                  ELSE
                     V_CDTABELA := V_CDPERCENTILMENOR;
                  END IF;
                  V_NMREFE := V_NMREFEMENOR;
                  V_CDREFE := V_CDREFEMENOR;
                  IF V_CDTABELA = V_CDPERCENTIL AND V_PCTATUAL < V_VRPERCENTILMENOR THEN
                     V_NMTABELA := '< '|| V_NMPERCENTILMENOR;
                     V_CDTABELA := '001';
                  END IF;
               ELSE
                  IF V_CDPERCENTILMAIOR <> '' THEN
                     V_NMTABELA := V_NMPERCENTILMAIOR;
                     V_CDTABELA := V_CDPERCENTILMAIOR;
                     V_NMREFE := V_NMREFEMAIOR;
                     V_CDREFE := V_CDREFEMAIOR;
                     BEGIN
                     SELECT MAX(DIET.CDPERCENTIL)
                       INTO V_CDPERCENTIL
                       FROM TABEVRDIET DIET
                      WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
                        AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                        AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
                    EXCEPTION 
                    WHEN NO_DATA_FOUND THEN
                    V_CDPERCENTIL := NULL;
                    END;
                     IF V_CDTABELA = V_CDPERCENTIL AND V_PCTATUAL > V_VRPERCENTILMAIOR THEN
                        V_NMTABELA := '> ' || V_NMPERCENTILMAIOR;
                        V_CDTABELA := '999';
                     END IF;
                  END IF;
               END IF;
               IF V_CDTABELA <> '' THEN
                  IF V_CDREFE <> '05' THEN /* BurrPhillips */
                     IF V_CDTABELA < '005' THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao', '','');
                     ELSE
                        IF (V_CDTABELA >= '005' AND V_CDTABELA <= '015') THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco de Deplecao', '','');
                        ELSE
                           IF (V_CDTABELA > '015' AND V_CDTABELA <= '095') THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofia', '','');
                           ELSE
                              IF (V_CDTABELA > '095') THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Excesso de Gordura', '','');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  ELSE
                     IF (V_CDTABELA < '005') THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao', '','');
                     ELSE
                        IF (V_CDTABELA >= '005' AND V_CDTABELA <= '010') THEN
                           V_CLASSIF :=  TRADUCAO(P_IDIOMA,'Risco de Deplecao', '','');
                        ELSE
                           IF (V_CDTABELA > '010' AND V_CDTABELA <= '095') THEN
                              V_CLASSIF :=  TRADUCAO(P_IDIOMA,'Eutrofia', '','');
                           ELSE
                              IF (V_CDTABELA > '095') THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Excesso de Gordura', '','');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_NMTABELA, DECODE(P_IDIOMA, 'P', 'PCT Percentil', '') || ' - ' || V_NMREFE);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','PCT Percentil', '') || ' - ' || V_NMREFE
                      WHERE CDFILIAL = P_CDFILIAL
                        AND CDPACIENTE = P_CDPACIENTE
                        AND DTCONSPACI = P_DTCONSPACI
                        AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                        AND CDSEQUAVAL = '01';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF, DECODE(P_IDIOMA, 'P', 'PCT Classificacao', '') || ' - ' || V_NMREFE);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'PCT Classificacao', '') || ' - ' || V_NMREFE
                      WHERE CDFILIAL = P_CDFILIAL
                        AND CDPACIENTE = P_CDPACIENTE
                        AND DTCONSPACI = P_DTCONSPACI
                        AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                        AND CDSEQUAVAL = '02';
                  END;
               END;
            END IF;
          END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '03' THEN  /* Calcula_CMB */
         V_CB := 0;
         V_PCT := 0;
         V_CLASSIF := '';
         V_CDREFE := '';
         V_CMB := 0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PCTATUAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '04';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCTATUAL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CB
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '08';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CB := 0;
         END;
         V_CMB := V_CB - (V_PCTATUAL * (0.314));
         BEGIN
         SELECT MIN(DIET.CDPERCENTIL)
           INTO V_CDPERCENTIL
         FROM TABEVRDIET DIET
         WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
           AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
           AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
        EXCEPTION
        WHEN NO_DATA_FOUND THEN
           V_CDPERCENTIL := NULL;
        END;
           /* with cdsPesqPer do begin
           Data := olePercentil[0];
           end;*/
           
          BEGIN 
         SELECT VRPERCENTIL,NMPERCENTIL, CDPERCENTIL,NMREFEBIBL,CDREFEBIBL
           INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR 
         FROM(SELECT MIN(DECODE(V_IDSEXOPACI,
                           0, DIET.VRSEXOMASC,
                           1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
         FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
         WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
           AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
           AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
           AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) >= V_PCTATUAL)
           AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
           AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
         GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
         ORDER BY 1)
         WHERE ROWNUM = 1;
         EXCEPTION
         WHEN NO_DATA_FOUND THEN
         V_VRPERCENTILMENOR := 0;
         V_NMPERCENTILMENOR := NULL;
         V_CDPERCENTILMENOR := NULL;
         V_NMREFEMENOR := NULL;
         V_CDREFEMENOR := NULL;
         END;
         /* with cdsPercentilMenor do begin
              Data := olePercentil[2];
            end; */
         BEGIN   
         SELECT VRPERCENTIL,NMPERCENTIL, CDPERCENTIL,NMREFEBIBL,CDREFEBIBL
           INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR 
         FROM(SELECT MAX(DECODE(V_IDSEXOPACI,
                           0, DIET.VRSEXOMASC,
                           1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
         FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
         WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
           AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
           AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
           AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) <= V_PCTATUAL)
           AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
           AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
         GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
         ORDER BY 1 DESC)
         WHERE ROWNUM = 1;
         EXCEPTION
         WHEN NO_DATA_FOUND THEN
         V_VRPERCENTILMENOR:= 0;
         V_NMPERCENTILMENOR := NULL;
         V_CDPERCENTILMENOR := NULL;
         V_NMREFEMENOR := NULL;
         V_CDREFEMENOR := NULL; 
         END;
          /* with cdsPercentilMaior do begin
                Data := olePercentil[1];
             end; */
         IF (V_CDPERCENTILMENOR IS NOT NULL) THEN
            IF (V_NMPERCENTILMAIOR IS NULL OR V_NMPERCENTILMENOR = V_NMPERCENTILMAIOR) THEN
               V_NMTABELA := V_NMPERCENTILMENOR;
            ELSE
               V_NMTABELA := TRADUCAO(P_IDIOMA,'Entre', '','') || V_NMPERCENTILMAIOR || ' - ' || V_NMPERCENTILMENOR;
            END IF;
            IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
               V_CDTABELA := V_CDPERCENTILMAIOR;
            ELSE
               V_CDTABELA := V_CDPERCENTILMENOR;
            END IF;
            V_NMREFE := V_NMREFEMENOR;
            V_CDREFE := V_CDREFEMENOR;
            IF (V_CDTABELA = V_CDPERCENTIL) AND (V_CMB < V_VRPERCENTILMENOR) THEN
               V_NMTABELA := '< ' || V_NMPERCENTILMENOR;
               V_CDTABELA := '001';
            END IF;
         ELSE
            IF V_CDPERCENTILMAIOR IS NOT NULL THEN
               V_NMTABELA := V_NMPERCENTILMAIOR;
               V_CDTABELA := V_CDPERCENTILMAIOR;
               V_NMREFE := V_NMREFEMAIOR;
               V_CDREFE := V_CDREFEMAIOR;
               BEGIN
               SELECT MAX(DIET.CDPERCENTIL)
                 INTO V_CDPERCENTIL
               FROM TABEVRDIET DIET
               WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
                 AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
                EXCEPTION
                WHEN NO_DATA_FOUND THEN
                V_CDPERCENTIL := NULL;
                END;
               IF (V_CDTABELA = V_CDPERCENTIL) AND (V_CMB > V_VRPERCENTILMAIOR) THEN
                  V_NMTABELA := '> ' || V_NMPERCENTILMAIOR;
                  V_CDTABELA := '999';
               END IF;
            END IF;
         END IF;
         IF (V_CDTABELA IS NOT NULL) THEN
            IF V_CDREFE <> '05' THEN /*BurrPhillips*/
               IF V_CDTABELA < '005' THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao', '','');
               ELSE
                  IF (V_CDTABELA >= '005') AND (V_CDTABELA <= '015') THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco de Deplecao', '','');
                  ELSE
                     IF (V_CDTABELA > '015') AND (V_CDTABELA <= '095') THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofia', '','');
                     ELSE
                        IF (V_CDTABELA > '095') THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal', '','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
            ELSE
               IF (V_CDTABELA < '010') THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao', '','');
               ELSE
                  IF (V_CDTABELA >= '010') AND (V_CDTABELA <= '090') THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofia', '','');
                  ELSE
                     IF (V_CDTABELA > '090') THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade', '','');
                     END IF;
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_CMB, '99999.999')), DECODE(P_IDIOMA, 'P', 'CMB Resultado', ''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'CMB Resultado', '')
                   WHERE CDFILIAL = P_CDFILIAL
                     AND CDPACIENTE = P_CDPACIENTE
                     AND DTCONSPACI = P_DTCONSPACI
                     AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                     AND CDSEQUAVAL = '01';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_NMTABELA, DECODE(P_IDIOMA, 'P', 'CMB Percentil', '')|| ' - ' || V_NMREFE);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'CMB Percentil', '') || ' - ' || V_NMREFE
                   WHERE CDFILIAL = P_CDFILIAL
                     AND CDPACIENTE = P_CDPACIENTE
                     AND DTCONSPACI = P_DTCONSPACI
                     AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                     AND CDSEQUAVAL = '02';
               END;
            END;
         END IF;
         IF (TO_NUMBER(P_IDADEANO) > 0) AND (TO_NUMBER(P_IDADEANO) < 75) THEN
                  /*GetPCT*/
          BEGIN
            SELECT NVL(MAX(DECODE(V_IDSEXOPACI,
                                  0, VRSEXOMASC,
                                  1, VRSEXOFEMI)), 0) 
            INTO V_VRTABDIET
            FROM TABEVRDIET
            WHERE (CDREFEBIBL   = C_AVALIA.CDTABELACO)
              AND (CDPERCENTIL  = '050')
              AND (CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
              AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI);
          EXCEPTION 
          WHEN NO_DATA_FOUND THEN
          V_VRTABDIET := 0;
          END;
            IF V_VRTABDIET <> 0 THEN
               V_CLASSIF := '';
               V_CMB := ((V_CMB * 100) / V_VRTABDIET);
               IF (V_CMB > 79 AND V_CMB < 90)  THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau I', '','');
               END IF;
               IF (V_CMB > 69 AND V_CMB < 80) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau II', '','');
               END IF;
               IF (V_CMB > 59 AND V_CMB < 70) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau III', '','');
               END IF;
               IF (V_CMB < 60) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Deplecao Ponderal Grau IV', '','');
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '04', LTRIM(TO_CHAR(V_CMB, '99999.999')), '% '||DECODE(P_IDIOMA, 'P', 'CMB Resultado', ''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = '% '||DECODE(P_IDIOMA, 'P', 'CMB Resultado', '')
                      WHERE CDFILIAL = P_CDFILIAL
                        AND CDPACIENTE = P_CDPACIENTE
                        AND DTCONSPACI = P_DTCONSPACI
                        AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                        AND CDSEQUAVAL = '04';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '05', V_CLASSIF, '% '||DECODE(P_IDIOMA, 'P', 'CMB Classificacao', ''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = '% '||DECODE(P_IDIOMA, 'P', 'CMB Classificacao', '')
                      WHERE CDFILIAL = P_CDFILIAL
                        AND CDPACIENTE = P_CDPACIENTE
                        AND DTCONSPACI = P_DTCONSPACI
                        AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                        AND CDSEQUAVAL = '05';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '04' THEN  /** Calcula_CB; **/
        V_VRTABDIET := '';
        V_CB := 0;
        V_NMREFE := NULL;
        V_RESULT := 0;
         BEGIN
            SELECT TO_NUMBER(NVL(MAX(DSINFOAVAL), 0))
              INTO V_CB
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '08';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CB := 0;
         END;
         IF (V_CB > 0) THEN
         BEGIN
            SELECT MAX(NMREFEBIBL), MAX(DECODE(V_IDSEXOPACI,
                                               1, TABEVRDIET.VRSEXOFEMI,
                                               0, TABEVRDIET.VRSEXOMASC))
             INTO V_NMREFE, V_VRTABDIET
            FROM TABEVRDIET, REFEBIBL
            WHERE TABEVRDIET.CDREFEBIBL = C_AVALIA.CDTABELACO
              AND TABEVRDIET.CDPERCENTIL = '050'
              AND TABEVRDIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
              AND TABEVRDIET.CDREFEBIBL = REFEBIBL.CDREFEBIBL
              AND TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN TABEVRDIET.VRIDADINIDI AND TABEVRDIET.VRIDADFINDI;
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
            V_NMREFE := NULL;
            V_VRTABDIET := 0;
            END;
            IF (V_NMREFE IS NOT NULL) THEN
               V_RESULT := V_CB * 100 / V_VRTABDIET;
               IF V_RESULT < 70 THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Grave', '','');
               ELSE
                  IF (V_RESULT >= 70 AND V_RESULT < 80) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Moderada', '','');
                  ELSE
                     IF (V_RESULT >= 80 AND V_RESULT < 90) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Leve', '','');
                     ELSE
                        IF (V_RESULT >= 90 AND V_RESULT < 110) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofia','', '');
                        ELSE
                           IF (V_RESULT >= 110 AND V_RESULT < 120) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA, 'Sobrepeso', '','');
                           ELSE
                              IF (V_RESULT >= 120) THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA, 'Obesidade', '','');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT, '99999.999'))||' %', DECODE(P_IDIOMA, 'P', 'CB Resultado Adequacao', '') || ' - ' || V_NMREFE);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'CB Resultado Adequacao', '') || ' - ' || V_NMREFE
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF, DECODE(P_IDIOMA, 'P', 'CB Percentil Classificacao', '') || ' - ' || V_NMREFE);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'CB Percentil Classificacao', '') || ' - ' || V_NMREFE
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '02';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '05' THEN  /*  Calcula_AMB */
         V_PCTATUAL := 0;
         V_CB := 0;
         V_AMB := 0;
         
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PCTATUAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '04';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCTATUAL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CB
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '08';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CB := 0;
         END;
         IF (V_PCTATUAL > 0 AND V_CB > 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               V_AMB := (V_CB - 0.314 * V_PCTATUAL);
               V_AMB := (POWER(V_AMB, 2) / 12.56) - 10;
            ELSE
               V_AMB := (V_CB - 0.314 * V_PCTATUAL);
               V_AMB := (POWER(V_AMB, 2) / 12.56) - 6.5;
            END IF;
            BEGIN
               SELECT MIN(DIET.CDPERCENTIL)
                 INTO V_CDPERCENTIL
               FROM TABEVRDIET DIET
               WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
                 AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
            EXCEPTION
               WHEN NO_DATA_FOUND THEN
                 V_CDPERCENTIL := NULL;
            END;
              /* with cdsPesqPer do begin
              Data := olePercentil[0];
              end;*/
            BEGIN
               SELECT  VRPERCENTIL,NMPERCENTIL, CDPERCENTIL, NMREFEBIBL,CDREFEBIBL
                 INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR
                 FROM(SELECT MIN(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
                  FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
                  WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
                    AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
                    AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
                    AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) >= V_PCTATUAL)
                    AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
                    AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
                  GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
                  ORDER BY 1)
               WHERE ROWNUM = 1;
            EXCEPTION 
               WHEN NO_DATA_FOUND THEN
                 V_VRPERCENTILMENOR := 0;
                 V_NMPERCENTILMENOR := NULL;
                 V_CDPERCENTILMENOR := NULL;
                 V_NMREFEMENOR := NULL;
                 V_CDREFEMENOR := NULL;
            END;
            /* with cdsPercentilMenor do begin
                 Data := olePercentil[2];
               end; */
            BEGIN
                SELECT    VRPERCENTIL,NMPERCENTIL, CDPERCENTIL, NMREFEBIBL, CDREFEBIBL
                  INTO V_VRPERCENTILMAIOR, V_NMPERCENTILMAIOR, V_CDPERCENTILMAIOR, V_NMRFEMAIOR, V_CDREFEMAIOR
                FROM(SELECT MAX(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
              
                FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
                WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
                  AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
                  AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
                  AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) <= V_PCTATUAL)
                  AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
                  AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
                GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
                ORDER BY 1 DESC)
                WHERE ROWNUM = 1;
            EXCEPTION 
              WHEN NO_DATA_FOUND THEN
                V_VRPERCENTILMAIOR := 0;
                V_NMPERCENTILMAIOR:=NULL;
                V_CDPERCENTILMAIOR :=NULL;
                V_NMRFEMAIOR :=NULL;
                V_CDREFEMAIOR :=NULL;
            END;
             /* with cdsPercentilMaior do begin
                   Data := olePercentil[1];
                end; */
            IF (V_CDPERCENTILMENOR IS NOT NULL) THEN
               IF ((V_NMPERCENTILMAIOR IS NULL) OR (V_NMPERCENTILMAIOR = V_NMPERCENTILMENOR)) THEN
                  V_NMTABELA := V_NMPERCENTILMENOR;
               ELSE
                  V_NMTABELA := TRADUCAO(P_IDIOMA, 'Entre', '','') || V_NMPERCENTILMAIOR || ' - ' || V_NMPERCENTILMENOR;
               END IF;
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_CDTABELA := V_CDPERCENTILMAIOR;
               ELSE
                  V_CDTABELA := V_CDPERCENTILMENOR;
               END IF;
               V_NMREFE := V_NMREFEMENOR;
               V_CDREFE := V_CDREFEMENOR;
               IF (V_CDTABELA = V_CDPERCENTIL AND V_AMB < V_VRPERCENTILMENOR) THEN
                  V_NMTABELA := '< ' || V_NMPERCENTILMENOR;
                  V_CDTABELA := '001';
               END IF;
            ELSE
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_NMTABELA := V_NMPERCENTILMAIOR;
                  V_CDTABELA := V_CDPERCENTILMAIOR;
                  V_NMREFE := V_NMREFEMAIOR;
                  V_CDREFE := V_CDREFEMAIOR;
                  BEGIN
                  SELECT MAX(DIET.CDPERCENTIL)
                    INTO V_CDPERCENTIL
                    FROM TABEVRDIET DIET
                   WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
                     AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                     AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
                  EXCEPTION
                  WHEN NO_DATA_FOUND THEN
                   V_CDPERCENTIL := NULL;
                  END;
                  IF (V_CDTABELA = V_CDPERCENTIL AND V_AMB > V_VRPERCENTILMAIOR) THEN
                     V_NMTABELA := '> ' || V_NMPERCENTILMAIOR;
                     V_CDTABELA := '999';
                  END IF;
               END IF;
            END IF;
            IF (V_CDTABELA IS NOT NULL) THEN
               IF V_CDREFE <> '05' /*BurrPhillips*/ THEN
                  IF V_CDTABELA <= '005' THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA, 'Deplecao', '','');
                  ELSE
                     IF V_CDTABELA > '005' AND V_CDTABELA <= '015' THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA, 'Abaixo da Media','', '');
                     ELSE
                        IF V_CDTABELA > '015' AND V_CDTABELA <= '085' THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA, 'Media', '','');
                        ELSE
                           IF V_CDTABELA > '085' AND V_CDTABELA <= '095' THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima da Media','','');
                           ELSE
                              IF V_CDTABELA > '095' THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Boa Nutricao','', '');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               ELSE
                  IF V_CDTABELA <= '005' THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao','','');
                  ELSE
                     IF (V_CDTABELA > '005') AND (V_CDTABELA <= '095') THEN
                          V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofia','','');
                     ELSE
                        IF (V_CDTABELA > '095') THEN
                            V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_AMB, '99999.999')), DECODE(P_IDIOMA, 'P', 'AMB Resultado', ''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'AMB Resultado', '')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_NMTABELA, DECODE(P_IDIOMA, 'P', 'AMB Percentil', '') || ' - ' || V_NMREFE);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'AMB Percentil', '') || ' - ' || V_NMREFE
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '02';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '03', V_CLASSIF, DECODE(P_IDIOMA, 'P', 'AMB Classificacao', '') || ' - ' || V_NMREFE);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'AMB Classificacao', '') || ' - ' || V_NMREFE
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '03';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '06' THEN  /*Calcula_PesoIdeal*/
         V_ALTURA:=0;
         V_PUNHO:=0;
         V_FAIXA:='';
         V_COMPLEICAO:='';
         V_RESULT := 0;
         V_NCLASSIF := '';
         V_ATUPESIDE:='';
         V_SEX := '';
         IF (V_IDSEXOPACI = '1') THEN
            V_SEX := 'F';
         ELSE 
            V_SEX := 'M';
         END IF;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
               INTO V_PUNHO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '07';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PUNHO := 0;
         END;
         IF (V_PUNHO > 0) AND (V_ALTURA > 0) THEN
            V_RESULT := ((V_ALTURA * 100) / V_PUNHO);
            IF (V_IDSEXOPACI = 0) THEN
               IF V_RESULT > 10.4 THEN
                  V_FAIXA := '0';
                  V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Pequena','','');
               ELSE
                  IF V_RESULT <= 10.4 AND V_RESULT >= 9.6 THEN
                     V_FAIXA := '1';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compeicao Media','','');
                  ELSE
                     V_FAIXA := '2';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao GrANDe','','');
                  END IF;
               END IF;
            ELSE
               IF V_RESULT > 11 THEN
                  V_FAIXA := '0';
                  V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Pequena','','');
               ELSE
                  IF V_RESULT <= 11 AND V_RESULT >= 10.1 THEN
                     V_FAIXA := '1';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Media','','');
                  ELSE
                     V_FAIXA := '2';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao GrANDe','','');
                  END IF;
               END IF;
            END IF;
            SELECT NVL(MAX(VR.VRPESOOSINI), 0) AS VRPESOOSINI,
                   NVL(MAX(VR.VRPESOOSFIN), 0) AS VRPESOOSFIN
            INTO V_VRPESOOSINI, V_VRPESOOSFIN
            FROM VALOROSSA VR
            WHERE (VR.CDREFEBIBL = C_AVALIA.CDTABELACO)     AND
                  (VR.IDSEXOOSSA = V_SEX)     AND
                  (VR.IDOSSATURA = V_FAIXA)          AND
                  ((V_ALTURA * 100) BETWEEN VR.VRALTUOSINI AND VR.VRALTUOSFIN);
            IF(V_VRPESOOSINI > 0) AND (V_VRPESOOSFIN > 0) THEN
            /*rotina para inserir o resultado no tipo de dado "Peso Ideal" para ser utilizado nos metodos
            "Peso Ajustado para Obeso", "Peso Ajustado" e "Adequacao do Peso" (somente se nenhum deles estiver selecionado)*/
               IF(INSTR(P_CDAVALIA, '63') > 0) AND (INSTR(P_CDAVALIA, '57') > 0) AND (INSTR(P_CDAVALIA, '55') > 0) AND
                 (INSTR(P_CDAVALIA, '06') > 0) THEN
                  DELETE
                    FROM INFOAVAL
                   WHERE CDFILIAL = P_CDFILIAL
                     AND CDPACIENTE = P_CDPACIENTE
                     AND DTCONSPACI = P_DTCONSPACI
                     AND CDTIPODADO = '17';
                  DELETE FROM METOAVAL
                    WHERE CDPACIENTE = P_CDPACIENTE
                      AND DTCONSPACI = P_DTCONSPACI
                      AND CDFILIAL = P_CDFILIAL
                      AND EXISTS (SELECT CDTBMETOAVAL
                                    FROM DADOAVAL
                                   WHERE CDTIPODADO = '17'
                                     AND DADOAVAL.CDTBMETOAVAL = METOAVAL.CDTBMETOAVAL);
                  INSERT INTO METOAVAL
                    (CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, IDTABELAAV, CDFILIAL)
                  (SELECT P_CDPACIENTE, P_DTCONSPACI, DADOAVAL.CDTBMETOAVAL, 'N', P_CDFILIAL
                     FROM DADOAVAL
                    WHERE CDTIPODADO = '17');
                  INSERT INTO INFOAVAL
                     (CDTBMETOAVAL, CDPACIENTE, DTCONSPACI, CDTIPODADO, DSOBSERAVAL, DSINFOAVAL, CDFILIAL)
                  (SELECT TBMETOAVAL.CDTBMETOAVAL, P_CDPACIENTE, P_DTCONSPACI, DADOAVAL.CDTIPODADO, DECODE(P_IDIOMA,'P','Peso Ideal (Metropolitan Life).',''), V_VRPESOOSINI, P_CDFILIAL
                    FROM TBMETOAVAL, DADOAVAL
                   WHERE TBMETOAVAL.CDTBMETOAVAL = DADOAVAL.CDTBMETOAVAL
                     AND DADOAVAL.CDTIPODADO = '17');
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_VRPESOOSINI||' Kg', TRADUCAO(P_IDIOMA,'Peso Ideal (Metropolitan Life)','',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = TRADUCAO(P_IDIOMA,'Peso Ideal (Metropolitan Life)','','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_COMPLEICAO, TRADUCAO(P_IDIOMA,'Peso Ideal (Metropolitan Life)','',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = TRADUCAO(P_IDIOMA,'Peso Ideal (Metropolitan Life)','','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '', TRADUCAO(P_IDIOMA,'Sem classificacao na referencia informada.','',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = TRADUCAO(P_IDIOMA,'Sem classificacao na referencia informada.','','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '07' THEN  /*Calcula_RCQ*/
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_QUADRIL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '10';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_QUADRIL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CINTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '11';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CINTURA := 0;
         END;
         IF V_QUADRIL > 0 AND V_CINTURA > 0 THEN
               V_RCQ := (V_CINTURA / V_QUADRIL);
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RCQ, '999999.99')), DECODE(P_IDIOMA, 'P', 'RCQ Resultado', ''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA, 'P', 'RCQ Resultado', '')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            IF V_IDSEXOPACI = 0 THEN
               IF V_RCQ <= 0.95 THEN
                  BEGIN
                     INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                     VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', DECODE(P_IDIOMA,'P','Normal','') , DECODE(P_IDIOMA,'P','RCQ Classificacao',''));
                  EXCEPTION
                     WHEN DUP_VAL_ON_INDEX THEN BEGIN
                        UPDATE RESUAVAL
                           SET DSCONTRESU = DECODE(P_IDIOMA,'P','RCQ Classificacao','')
                        WHERE CDFILIAL = P_CDFILIAL
                          AND CDPACIENTE = P_CDPACIENTE
                          AND DTCONSPACI = P_DTCONSPACI
                          AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                          AND CDSEQUAVAL = '02';
                     END;
                  END;
               ELSE
                  BEGIN
                     INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                     VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', DECODE(P_IDIOMA,'P','Alterado','') , DECODE(P_IDIOMA,'P','RCQ Classificacao',''));
                  EXCEPTION
                     WHEN DUP_VAL_ON_INDEX THEN BEGIN
                        UPDATE RESUAVAL
                           SET DSCONTRESU = DECODE(P_IDIOMA,'P','RCQ Classificacao','')
                        WHERE CDFILIAL = P_CDFILIAL
                          AND CDPACIENTE = P_CDPACIENTE
                          AND DTCONSPACI = P_DTCONSPACI
                          AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                          AND CDSEQUAVAL = '02';
                     END;
                  END;
               END IF;
            ELSE
               IF V_RCQ <= 0.80 THEN
                  BEGIN
                     INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                     VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', DECODE(P_IDIOMA,'P','Normal','') , DECODE(P_IDIOMA,'P','RCQ Classificacao',''));
                  EXCEPTION
                     WHEN DUP_VAL_ON_INDEX THEN BEGIN
                        UPDATE RESUAVAL
                           SET DSCONTRESU = DECODE(P_IDIOMA,'P','RCQ Classificacao','')
                        WHERE CDFILIAL = P_CDFILIAL
                          AND CDPACIENTE = P_CDPACIENTE
                          AND DTCONSPACI = P_DTCONSPACI
                          AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                          AND CDSEQUAVAL = '02';
                     END;
                  END;
               ELSE
                  BEGIN
                     INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                     VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', DECODE(P_IDIOMA,'P','Alterado','') , DECODE(P_IDIOMA,'P','RCQ Classificacao',''));
                  EXCEPTION
                     WHEN DUP_VAL_ON_INDEX THEN BEGIN
                        UPDATE RESUAVAL
                           SET DSCONTRESU = DECODE(P_IDIOMA,'P','RCQ Classificacao','')
                        WHERE CDFILIAL = P_CDFILIAL
                          AND CDPACIENTE = P_CDPACIENTE
                          AND DTCONSPACI = P_DTCONSPACI
                          AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                          AND CDSEQUAVAL = '02';
                     END;
                  END;
               END IF;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '08' THEN   /*Calcula_AGB*/
         V_CB := 0;
         V_PCT := 0;
         V_CLASSIF := '';
         V_CDREFE := '';
	       V_PCTATUAL := 0; 
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PCTATUAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '04';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCTATUAL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CB
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '08';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CB := 0;
         END;
         IF V_PCTATUAL <> 0 AND V_CB <> 0 THEN
            V_RESULT := ((V_CB * (V_PCTATUAL/10)) / 2) - ((3.14 * POWER((V_PCTATUAL/10), 2)) / 4);
            BEGIN
            SELECT MIN(DIET.CDPERCENTIL)
              INTO V_CDPERCENTIL
            FROM TABEVRDIET DIET
            WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
              AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
              AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
         EXCEPTION
         WHEN NO_DATA_FOUND THEN
         V_CDPERCENTIL := NULL;
         END;
           /* with cdsPesqPer do begin
           Data := olePercentil[0];
           end;*/
           BEGIN
           SELECT VRPERCENTIL,NMPERCENTIL, CDPERCENTIL, NMREFEBIBL, CDREFEBIBL
              INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR
            FROM(SELECT MIN(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL

            FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
            WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
              AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
              AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
              AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) >= V_PCTATUAL)
              AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
              AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1)
            WHERE ROWNUM = 1;
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
           V_VRPERCENTILMENOR := 0;
           V_NMPERCENTILMENOR:=NULL;
           V_CDPERCENTILMENOR :=NULL;
           V_NMREFEMENOR :=NULL;
           V_CDREFEMENOR :=NULL;
          END;
         /* with cdsPercentilMenor do begin
              Data := olePercentil[2];
            end; */
            BEGIN
            SELECT VRPERCENTIL,NMPERCENTIL, CDPERCENTIL, NMREFEBIBL,CDREFEBIBL
              INTO V_VRPERCENTILMAIOR, V_NMPERCENTILMAIOR, V_CDPERCENTILMAIOR, V_NMRFEMAIOR, V_CDREFEMAIOR
            FROM(SELECT MAX(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
            WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
              AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
              AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
              AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) <= V_PCTATUAL)
              AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
              AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1 DESC)
            WHERE ROWNUM = 1;
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
             V_VRPERCENTILMAIOR := 0;
             V_NMPERCENTILMAIOR := NULL;
             V_CDPERCENTILMAIOR := NULL;
             V_NMRFEMAIOR := NULL;
             V_CDREFEMAIOR := NULL;
          END;
          /* with cdsPercentilMaior do begin
                Data := olePercentil[1];
             end; */
            IF (V_CDPERCENTILMAIOR = '085') AND (V_CDPERCENTILMENOR = '085') THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
            ELSE
               IF V_CDPERCENTILMAIOR >= '085' THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Excesso de Gordura','','');
               ELSE
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
               END IF;
            END IF;
            IF (V_CDPERCENTILMENOR IS NOT NULL) THEN
               IF (V_NMPERCENTILMAIOR IS NULL) OR (V_NMPERCENTILMAIOR = V_NMPERCENTILMENOR) THEN
                  V_NMTABELA := V_NMPERCENTILMENOR;
               ELSE
                  V_NMTABELA := TRADUCAO(P_IDIOMA,'Entre ','','') || V_NMPERCENTILMAIOR || ' - ' || V_NMPERCENTILMENOR;
               END IF;
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_CDTABELA := V_CDPERCENTILMAIOR;
               ELSE
                  V_CDTABELA := V_CDPERCENTILMENOR;
               END IF;
               V_NMREFE := V_NMREFEMENOR;
               V_CDREFE := V_CDREFEMENOR;
               IF (V_CDPERCENTILMAIOR IS NULL) THEN
                  V_NMTABELA := '< ' || V_NMPERCENTILMENOR;
                  V_CDTABELA := '001';
               END IF;
            ELSE
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_NMTABELA := V_NMPERCENTILMAIOR;
                  V_CDTABELA := V_CDPERCENTILMAIOR;
                  V_NMREFE   := V_NMRFEMAIOR;
                  V_CDREFE   := V_CDREFEMAIOR;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'999999.99')) , DECODE(P_IDIOMA,'P','AGB Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','AGB Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            IF (V_CDTABELA IS NOT NULL) THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_NMTABELA , DECODE(P_IDIOMA,'P','AGB Percentil','') || ' - ' || V_NMREFE);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','AGB Percentil','') || ' - ' || V_NMREFE
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '03', V_CLASSIF , DECODE(P_IDIOMA,'P','AGB Classificacao','') || ' - ' || V_NMREFE);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                       SET DSCONTRESU = DECODE(P_IDIOMA,'P','AGB Classificacao','') || ' - ' || V_NMREFE
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '03';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '09' THEN   /*Calcula_PesoIdeal_Must*/
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         IF V_ALTURA <> 0 THEN
         BEGIN
            SELECT DECODE(V_IDSEXOPACI,
                          1, T.VRSEXOFEMI,
                          0, T.VRSEXOMASC) AS VRTABEDIET
              INTO V_VRTABDIET
              FROM TABEVRDIET T
             WHERE(T.CDREFEBIBL  = C_AVALIA.CDTABELACO)
               AND(T.CDPERCENTIL = '050')
               AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI)
               AND(T.CDTBMETOAVAL = '01');
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
          V_VRTABDIET := 0;
          END;
            IF V_VRTABDIET <> 0 THEN
               V_RESULT := V_VRTABDIET * POWER(V_ALTURA, 2);
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')) , DECODE(P_IDIOMA,'P','Peso Ideal (Must) Resultado',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal (Must) Resultado','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
	          END IF;  
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '10' THEN  /* Calcula_PesoIdeal_BurrPhi*/
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         BEGIN
         SELECT DECODE(V_IDSEXOPACI,
                       1, T.VRSEXOFEMI,
                       0, T.VRSEXOMASC) AS VRTABEDIET
           INTO V_VRTABDIET
           FROM TABEVRDIET T
          WHERE(T.CDREFEBIBL  = C_AVALIA.CDTABELACO)
            AND(T.CDPERCENTIL = '050')
            AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI)
            AND(T.CDTBMETOAVAL = '01');
        EXCEPTION
        WHEN NO_DATA_FOUND THEN
          V_VRTABDIET := 0;
        END;
         IF V_VRTABDIET <> 0 THEN
            V_RESULT := V_VRTABDIET * POWER(V_ALTURA, 2);
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')) , DECODE(P_IDIOMA,'P','Peso Ideal (Burr Phillps) Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal (Burr Phillps) Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '11' THEN  /*Calcula_CircunfCintura*/
	       V_DSRESUAVAL := '';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CINTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '11';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CINTURA := 0;
         END;
         IF (V_CINTURA <> 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               IF V_CINTURA < 94 THEN
                  V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Normal','','');
               ELSE
                  IF (V_CINTURA >= 94) AND (V_CINTURA < 102) THEN
                     V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Risco Moderado','','');
                  ELSE
                     IF V_CINTURA >= 102 THEN
                        V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Alto Risco','','');
                     END IF;
                  END IF;
               END IF;
            ELSE
               IF V_CINTURA < 80 THEN
                  V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Normal','','');
               ELSE
                  IF (V_CINTURA >= 80) AND (V_CINTURA < 88) THEN
                     V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Risco Moderado','','');
                  ELSE
                     IF (V_CINTURA >= 88) THEN
                        V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Alto Risco','','');
                     END IF;
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_DSRESUAVAL , DECODE(P_IDIOMA,'P','Circunf. da Cintura',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Circunf. da Cintura','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '12' THEN     /*Calcula_AN_GOMEZ*/
	       V_PESOINF := 0;
	       V_PESOTABE:= 0;
	       V_RESULTPESO := 0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         BEGIN
            SELECT NVL(DECODE(V_IDSEXOPACI,
                              0, VRPESOMASIDA,
                              1, VRPESOFEMIDA), 0) AS VRPESOTABE,
                   NVL(DECODE(V_IDSEXOPACI,
                              0, VRALTUMASIDA,
                              1, VRALTUFEMIDA) , 0) AS VRALTUTABE
            INTO V_VRPESOTABE, V_VRALTUTABE
            FROM PESALTIDADE
            WHERE (CDREFEBIBL  = C_AVALIA.CDTABELACO)  AND
                  (CDPERCENTIL = '050')                AND
                  (NRIDADEINI  = TO_NUMBER(P_IDADEANO))AND
                  (NRIDADEFIN  = TO_NUMBER(P_IDADEMES));
         EXCEPTION
         WHEN NO_DATA_FOUND THEN
            V_VRPESOTABE := 0;
            V_VRALTUTABE := 0;
         END;
         /*with cdsCalcAn do begin
              Data := olePesCalc[1];
           end;*/
         IF V_VRPESOTABE <> 0 THEN
            V_RESULTPESO := (V_PESOINF * 100) / V_VRPESOTABE;
         ELSE
            V_RESULTPESO := 0;
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULTPESO,'99999.999'))|| '%' , DECODE(P_IDIOMA,'P','Peso/Idade Resultado',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso/Idade Resultado','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '01';
            END;
         END;
         IF V_RESULTPESO <> 0 THEN
            IF V_RESULTPESO > 90 THEN
               V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Eutrofia','','');
            ELSE
               IF (V_RESULTPESO > 75) AND (V_RESULTPESO <= 90) THEN
                  V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Desnutricao Leve','','');
               ELSE
                  IF (V_RESULTPESO > 60) AND (V_RESULTPESO <= 75) THEN
                     V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Desnutricao Moderada','','');
                  ELSE
                     IF (V_RESULTPESO <= 60) THEN
                        V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Desnutricao Grave','','');
                     END IF;
                  END IF;
               END IF;
            END IF;
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_DSRESUAVAL , DECODE(P_IDIOMA,'P','Peso/Idade Classificacao',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso/Idade Classificacao','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '02';
            END;
         END;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '13' THEN   /*Calcula_AN_Waterlow*/
         V_PESOINF    := 0;
         V_ALTURAINF  := 0;
         V_RESULTPESO := 0;
         V_RESULTALT  := 0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURAINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURAINF := 0;
         END;
         BEGIN
            SELECT DECODE(V_IDSEXOPACI,
                          1, VRPESOFEMALT,
                               VRPESOMASALT) AS VRPESO
            INTO V_VRPESO
            FROM PESOALTU
            WHERE(CDREFEBIBL  = C_AVALIA.CDTABELACO) AND
                 (CDPERCENTIL = '050')               AND
                 (VRALTURA    = (V_ALTURAINF * 100));
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
            V_VRPESO := 0;
        END;
         /* with cdsPesoIdealAltura do begin
               Data := olePesCalc[0];
            end;*/
         BEGIN 
            SELECT NVL(DECODE(V_IDSEXOPACI,
                              0, VRPESOMASIDA,
                              1, VRPESOFEMIDA), 0) AS VRPESOTABE,
                   NVL(DECODE(V_IDSEXOPACI,
                              0, VRALTUMASIDA,
                              1, VRALTUFEMIDA) , 0) AS VRALTUTABE
            INTO V_VRPESOTABE, V_VRALTUTABE
            FROM PESALTIDADE
            WHERE (CDREFEBIBL  = C_AVALIA.CDTABELACO)  AND
                  (CDPERCENTIL = '050')                AND
                  (NRIDADEINI  = TO_NUMBER(P_IDADEANO))AND
                  (NRIDADEFIN  = TO_NUMBER(P_IDADEMES));
        EXCEPTION
          WHEN NO_DATA_FOUND THEN
          V_VRPESOTABE := 0;
          V_VRALTUTABE := 0;
       END;
         /*with cdsCalcAn do begin
              Data := olePesCalc[1];
           end;*/
         IF V_VRPESO <> 0 THEN
            V_RESULTPESO := (V_PESOINF * 100) / V_VRPESO;
         END IF;
         IF V_VRALTUTABE <> 0 THEN
            V_RESULTALT := (V_ALTURAINF * 10000) / V_VRALTUTABE;
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULTALT,'99999.99'))||'% - '||LTRIM(TO_CHAR(V_RESULTPESO,'99999.99'))||'%' , DECODE(P_IDIOMA,'P','Altura/Idade e Peso/Altura Resultado',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','Altura/Idade e Peso/Altura Resultado','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '01';
            END;
         END;
         IF (V_RESULTPESO <> 0) AND (V_RESULTALT <> 0) THEN
            IF (V_RESULTALT > 95) THEN
               IF (V_RESULTPESO <= 90) THEN
                  V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Desnutricao Aguda','','');
               ELSE
                  IF (V_RESULTPESO > 90 ) THEN
                     IF V_VRPESOTABE <> 0 THEN
                        V_RESUEUTRO := ((V_PESOINF * 100) / (V_ALTURAINF * 100)) / (V_VRPESOTABE / V_VRALTUTABE);
                        IF (V_RESUEUTRO > 120) THEN
                           V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Obesidade','','');
                        ELSE
                           IF (V_RESUEUTRO > 110) AND (V_RESUEUTRO <= 120) THEN
                              V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                           ELSE
                              IF (V_RESUEUTRO > 90) AND (V_RESUEUTRO <= 110) THEN
                                 V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Eutrofia','','');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
            ELSE
               IF (V_RESULTPESO <= 90) THEN
                  V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Desnutricao Cronica','','');
               ELSE
                  IF (V_RESULTPESO > 90) THEN
                     V_DSRESUAVAL := TRADUCAO(P_IDIOMA,'Desnutricao Pregressa','','');
                  END IF;
               END IF;
            END IF;
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_DSRESUAVAL , DECODE(P_IDIOMA,'P','Altura/Idade e Peso/Altura Classificacao',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','Altura/Idade e Peso/Altura Classificacao','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '02';
            END;
         END;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '14' THEN   /*Calcula_PesoIdeal_Frisancho*/
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         IF V_ALTURA <> 0 THEN
         BEGIN
            SELECT DECODE(V_IDSEXOPACI,
                          1, T.VRSEXOFEMI,
                          0, T.VRSEXOMASC) AS VRTABEDIET
              INTO V_VRTABDIET
            FROM TABEVRDIET T
            WHERE (T.CDREFEBIBL  = C_AVALIA.CDTABELACO) AND
                  (T.CDPERCENTIL = '050')               AND
                  (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIDI AND VRIDADFINDI) AND
                  (T.CDTBMETOAVAL = '01');
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
           V_VRTABDIET := 0;
          END;
            IF V_VRTABDIET <> 0 THEN
               V_RESULT := V_VRTABDIET * POWER(V_ALTURA, 2);
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')) , DECODE(P_IDIOMA,'P','Peso Ideal (Frisancho) Resultado',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal (Frisancho) Resultado','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '15' THEN    /*Calcula_PerCefalico*/
         V_PERCEF := 0;
	 BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PERCEF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '22';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PERCEF := 0;
         END;
         IF V_PERCEF <> 0 THEN
         BEGIN
            SELECT MIN(DIET.CDPERCENTIL)
              INTO V_CDPERCENTIL
            FROM TABEVRDIET DIET
            WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
              AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
              AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
              V_CDPERCENTIL:= NULL;
           END;
              /* with cdsPesqPer do begin
              Data := olePercentil[0];
              end;*/
            BEGIN  
            SELECT VRPERCENTIL,NMPERCENTIL, CDPERCENTIL, NMREFEBIBL, CDREFEBIBL
            INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR
            
            FROM(SELECT MIN(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
            WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
              AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
              AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
              AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) >= V_PCTATUAL)
              AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
              AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1)
            WHERE ROWNUM = 1;
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
            V_VRPERCENTILMENOR:= 0 ;
            V_NMPERCENTILMENOR := NULL;
            V_CDPERCENTILMENOR := NULL;
            V_NMREFEMENOR := NULL;
            V_CDREFEMENOR := NULL;
            END;
            /* with cdsPercentilMenor do begin
                 Data := olePercentil[2];
               end; */
            BEGIN   
            SELECT VRPERCENTIL,NMPERCENTIL, CDPERCENTIL,NMREFEBIBL,CDREFEBIBL
             INTO V_VRPERCENTILMAIOR, V_NMPERCENTILMAIOR, V_CDPERCENTILMAIOR, V_NMRFEMAIOR, V_CDREFEMAIOR
            FROM(SELECT MAX(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL

            FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
            WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
              AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
              AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
              AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) <= V_PCTATUAL)
              AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
              AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1 DESC)
            WHERE ROWNUM =1;
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
            V_VRPERCENTILMAIOR := 0;
            V_NMPERCENTILMAIOR := NULL;
            V_CDPERCENTILMAIOR := NULL;
            V_NMRFEMAIOR := NULL;
            V_CDREFEMAIOR := NULL;
            END;
             /* with cdsPercentilMaior do begin
                   Data := olePercentil[1];
                end; */
            IF (V_CDPERCENTILMENOR IS NOT NULL) THEN
               IF (V_NMPERCENTILMAIOR IS NULL) OR (V_NMPERCENTILMAIOR = V_NMPERCENTILMENOR) THEN
                  V_NMTABELA := V_NMPERCENTILMENOR;
               ELSE
                  V_NMTABELA := V_NMPERCENTILMAIOR;
               END IF;
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_CDTABELA := V_CDPERCENTILMAIOR;
               ELSE
                  V_CDTABELA := V_CDPERCENTILMENOR;
               END IF;
               IF (V_CDPERCENTILMAIOR IS NULL) THEN
                  V_NMTABELA := '< ' || V_NMPERCENTILMENOR;
                  V_CDTABELA := '001';
               END IF;
            ELSE
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_NMTABELA := V_NMPERCENTILMAIOR;
                  V_CDTABELA := V_CDPERCENTILMAIOR;
               END IF;
            END IF;
            IF (V_CDTABELA < '005') THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Energetica Proteica','','');
            ELSE
               IF (V_CDTABELA >= '005') AND (V_CDTABELA <= '095') THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado','','');
               ELSE
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Aumentado','','');
               END IF;
            END IF;
            IF (V_CDTABELA IS NOT NULL) THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_NMTABELA , DECODE(P_IDIOMA,'P','Perimetro Cefalico Percentil',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Perimetro Cefalico Percentil','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF , DECODE(P_IDIOMA,'P','Perimetro Cefalico Classificacao',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Perimetro Cefalico Classificacao','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '' , DECODE(P_IDIOMA,'P','Sem Classificacao na referencia informada.',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Sem Classificacao na referencia informada.','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '16' THEN     /*Calcula_SomaPrega*/
         V_PCB  := 0;
         V_PCT  := 0;
         V_PCSE := 0;
         V_PCSI := 0;
         V_SOMAPREGA := 0;
         V_CLASSIF := '';
         BEGIN 
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
               INTO V_PCB
              FROM INFOAVAL
             WHERE CDFILIAL = P_CDFILIAL
               AND CDPACIENTE = P_CDPACIENTE
               AND DTCONSPACI = P_DTCONSPACI
               AND CDTIPODADO = '03';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCB := 0;
         END;
         BEGIN
         SELECT TO_NUMBER(MAX(DSINFOAVAL))
             INTO V_PCT
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '04';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCT := 0;
         END;
         BEGIN
         SELECT TO_NUMBER(MAX(DSINFOAVAL))
             INTO V_PCSE
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '05';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCSE := 0;
         END;
         BEGIN
         SELECT TO_NUMBER(MAX(DSINFOAVAL))
             INTO V_PCSI
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '06';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCSI := 0;
         END;
         V_SOMAPREGA := V_PCB + V_PCT + V_PCSE + V_PCSI;
         IF V_PCB <> 0 AND V_PCT <> 0 AND V_PCSE <> 0 AND V_PCSI <> 0 THEN
         BEGIN
            SELECT DECODE(V_IDSEXOPACI,
                          1, VRPEPREGAFEM,
                          0, VRPEPREGAMAS) AS VRPEPREGAS
               INTO V_VRPREGAS
            FROM TABVRPREGAS TP
            WHERE (TP.CDREFEBIBL = C_AVALIA.CDTABELACO)                AND
                  (CDTBMETOAVAL = '16')                                AND
                  (TO_NUMBER(P_IDADEANO) BETWEEN TP.VRIDADINIPR AND TP.VRIDADFINPR) AND
                  (TP.VRSOMAPREGAS = (SELECT MAX(VRSOMAPREGAS)
                                      FROM TABVRPREGAS
                                      WHERE (CDREFEBIBL = C_AVALIA.CDTABELACO)              AND
                                            (CDTBMETOAVAL = '16')                           AND
                                            (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN VRIDADINIPR AND VRIDADFINPR) AND
                                            (VRSOMAPREGAS <= V_SOMAPREGA))) AND
                   (DECODE(V_IDSEXOPACI,
                           1, VRPEPREGAFEM,
                           0, VRPEPREGAMAS) <> 0);
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
             V_VRPREGAS := 0;
            END;
            IF V_VRPREGAS <> 0 THEN
               V_RESULT := V_VRPREGAS;
               IF V_IDSEXOPACI = 0 THEN
                  IF TRUNC(V_RESULT,3) < 6 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao','','');
                  ELSE
                     IF (TRUNC(V_RESULT,3) >= 6) AND (TRUNC(V_RESULT, 3) <= 14) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                     ELSE
                        IF (TRUNC(V_RESULT, 3) > 14 ) AND (TRUNC(V_RESULT, 3) < 16) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Media','','');
                        ELSE
                           IF (TRUNC(V_RESULT, 3) >= 16 ) AND (TRUNC(V_RESULT, 3) < 25) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima da Media','','');
                           ELSE
                              IF (TRUNC(V_RESULT, 3) >= 25 ) THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               ELSE
                  IF TRUNC(V_RESULT, 3) < 8 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao','','');
                  ELSE
                     IF (TRUNC(V_RESULT, 3) >= 9) AND (TRUNC(V_RESULT, 3) <= 22) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                     ELSE
                        IF (TRUNC(V_RESULT, 3) > 22 ) AND (TRUNC(V_RESULT, 3) < 24) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Media','','');
                        ELSE
                           IF (TRUNC(V_RESULT, 3) >= 24 ) AND (TRUNC(V_RESULT, 3) < 31) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima da Media','','');
                           ELSE
                              IF (TRUNC(V_RESULT, 3) >= 32 ) THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||'%' , V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '17' THEN      /*Calcula_BiaGordura*/
         V_GORDURA := 0;
         V_CLASSIF := '';
         V_GORDURAIDEAL := '';
         BEGIN
         SELECT TO_NUMBER(MAX(DSINFOAVAL))
             INTO V_GORDURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '14';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_GORDURA := 0;
         END;
         IF V_GORDURA <> 0 THEN
            IF V_IDSEXOPACI = 0 THEN
               IF (TO_NUMBER(P_IDADEANO) < 19)THEN
                  V_CLASSIF := '';
               ELSE
                  IF (TO_NUMBER(P_IDADEANO) > 18) AND (TO_NUMBER(P_IDADEANO) < 30) THEN
                     V_GORDURAIDEAL := '16';
                     IF (V_GORDURA = 16) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                     ELSE
                        IF (V_GORDURA < 16) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                        ELSE
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                        END IF;
                     END IF;
                  ELSE
                     IF (TO_NUMBER(P_IDADEANO) > 29) AND (TO_NUMBER(P_IDADEANO) < 40) THEN
                        V_GORDURAIDEAL := '17';
                        IF (V_GORDURA = 17) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                        ELSE
                           IF (V_GORDURA < 17) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                           ELSE
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                           END IF;
                        END IF;
                     ELSE
                        IF (TO_NUMBER(P_IDADEANO) > 39) AND (TO_NUMBER(P_IDADEANO) < 50) THEN
                           V_GORDURAIDEAL := '18';
                           IF (V_GORDURA = 18) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                           ELSE
                              IF (V_GORDURA < 18) THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                              ELSE
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                              END IF;
                           END IF;
                        ELSE
                           IF (TO_NUMBER(P_IDADEANO) > 49) AND (TO_NUMBER(P_IDADEANO) < 60) THEN
                              V_GORDURAIDEAL := '19';
                              IF (V_GORDURA = 19) THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                              ELSE
                                 IF (V_GORDURA < 19) THEN
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                                 ELSE
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                                 END IF;
                              END IF;
                           ELSE
                              IF (TO_NUMBER(P_IDADEANO) >= 60) THEN
                                 V_GORDURAIDEAL := '20';
                                 IF (V_GORDURA = 20) THEN
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                                 ELSE
                                    IF (V_GORDURA < 20) THEN
                                       V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                                    ELSE
                                       V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                                    END IF;
                                 END IF;
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
            ELSE
               IF (TO_NUMBER(P_IDADEANO) < 19) THEN
                  V_CLASSIF := '';
               ELSE
                  IF (TO_NUMBER(P_IDADEANO) > 18) AND (TO_NUMBER(P_IDADEANO) < 30) THEN
                     V_GORDURAIDEAL := '20';
                     IF (V_GORDURA = 20) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                     ELSE
                        IF (V_GORDURA < 20) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                        ELSE
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                        END IF;
                     END IF;
                  ELSE
                     IF (TO_NUMBER(P_IDADEANO) > 29) AND (TO_NUMBER(P_IDADEANO) < 40) THEN
                        V_GORDURAIDEAL := '21';
                        IF (V_GORDURA = 21) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                        ELSE
                           IF (V_GORDURA < 21) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                           ELSE
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                           END IF;
                        END IF;
                     ELSE
                        IF (TO_NUMBER(P_IDADEANO) > 39) AND (TO_NUMBER(P_IDADEANO) < 50) THEN
                           V_GORDURAIDEAL := '22';
                           IF (V_GORDURA = 22) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                           ELSE
                              IF (V_GORDURA < 22) THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                              ELSE
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                              END IF;
                           END IF;
                        ELSE
                           IF (TO_NUMBER(P_IDADEANO) > 49) AND (TO_NUMBER(P_IDADEANO) < 60) THEN
                              V_GORDURAIDEAL := '23';
                              IF (V_GORDURA = 23) THEN
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                              ELSE
                                 IF (V_GORDURA < 23) THEN
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                                 ELSE
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                                 END IF;
                              END IF;
                           ELSE
                              IF (TO_NUMBER(P_IDADEANO) >= 60) THEN
                                 V_GORDURAIDEAL := '24';
                                 IF (V_GORDURA = 24) THEN
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                                 ELSE
                                    IF (V_GORDURA < 24) THEN
                                       V_CLASSIF := TRADUCAO(P_IDIOMA,'Abaixo do Normal','','');
                                    ELSE
                                       V_CLASSIF := TRADUCAO(P_IDIOMA,'Acima do Normal','','');
                                    END IF;
                                 END IF;
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
            END IF;
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_GORDURAIDEAL , DECODE(P_IDIOMA,'P','Bia Gordura Ideal',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','Bia Gordura Ideal','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '01';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF , DECODE(P_IDIOMA,'P','Bia Classificacao',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','Bia Classificacao','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '02';
            END;
         END;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '18' THEN    /*Calcula_IMC_Amputado*/
         V_IMCAMPUT := 0;
         V_PESOCORR := 0;
         V_ALT      := 0;
         V_PESOANT  := 0;
         V_ALTURA   := 0;
         V_PESO     := 0;
         V_CLASSIF  := '';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOCORR
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOCORR := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALT
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALT := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOANT
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '15';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOANT := 0;
         END;
         IF (V_PESOCORR <> 0) AND (V_ALT <> 0) AND (V_PESOANT <> 0) THEN
            V_ALTURA := (V_ALT) * (V_ALT);
            V_PESO   := (1- ((V_PESOANT - V_PESOCORR) / V_PESOANT));
            V_IMCAMPUT := (V_PESOCORR / (V_ALTURA * V_PESO));
            IF V_IMCAMPUT < 18.5 THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixo Peso','','');
            ELSE
               IF (V_IMCAMPUT >= 18.5) AND  (V_IMCAMPUT < 25) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Adqequado ou Eutotrofico','','');
               ELSE
                  IF (V_IMCAMPUT >= 25) AND  (V_IMCAMPUT < 30) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_IMCAMPUT,'99999.999')) , DECODE(P_IDIOMA,'P','IMC Amputado - Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','IMC Amputado - Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF , DECODE(P_IDIOMA,'P','IMC Amputado - Classificacao',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','IMC Amputado - Classificacao','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '02';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '19' THEN   /*Calcula_PesoIdeal_Grant*/
         V_ALTURA     := 0;
         V_PUNHO      := 0;
         V_RESULT     := 0;
         V_PESO       := 0;
         V_ADEQ       := 0;
         V_FAIXA      :='';
         V_COMPLEICAO := '';
         V_PESOOSSINI := 0;
         IF(V_IDSEXOPACI = '0') THEN
            V_SEX := 'M';
         ELSE
            V_SEX := 'F';
         END IF;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PUNHO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '07';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PUNHO := 0;
         END;
         IF (V_PUNHO <> 0) THEN
            V_RESULT := (V_ALTURA * 100) / V_PUNHO;
            IF (V_IDSEXOPACI = 0) THEN
               IF (V_RESULT > 10.4) THEN
                  V_FAIXA := '0';
                  V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Pequena','','');
               ELSE
                  IF (V_RESULT <= 10.4) AND (V_RESULT >= 9.6) THEN
                     V_FAIXA := '1';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Media','','');
                  ELSE
                     V_FAIXA := '2';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Grande','','');
                  END IF;
               END IF;
            ELSE
               IF (V_RESULT > 11) THEN
                  V_FAIXA := '0';
                  V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Pequena','','');
               ELSE
                  IF (V_RESULT <= 11) AND (V_RESULT >= 10.1) THEN
                     V_FAIXA := '1';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Media','','');
                  ELSE
                     V_FAIXA := '2';
                     V_COMPLEICAO := TRADUCAO(P_IDIOMA,'Compleicao Grande','','');
                  END IF;
               END IF;
            END IF;
            BEGIN
            SELECT NVL(VR.VRPESOOSINI, 0) AS VRPESOOSINI
               INTO V_PESOOSSINI
            FROM VALOROSSA VR
            WHERE (VR.CDREFEBIBL = C_AVALIA.CDTABELACO)AND
                  (VR.IDSEXOOSSA = V_SEX)       AND
                  (VR.IDOSSATURA = V_FAIXA)            AND
                  ((V_ALTURA * 100) BETWEEN VR.VRALTUOSINI AND VR.VRALTUOSFIN);
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
            V_PESOOSSINI := 0;
            END;
            IF (V_PESO <> 0) AND (V_PESOOSSINI <> 0) THEN
               V_ADEQ := (V_PESO * 100) / V_PESOOSSINI;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_PESOOSSINI||'Kg' , DECODE(P_IDIOMA,'P','Peso Ideal Grant',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal Grant','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_COMPLEICAO , DECODE(P_IDIOMA,'P','Peso Ideal Grant',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal Grant','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '02';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '03', LTRIM(TO_CHAR(V_ADEQ,'99999.99'))||'%' , DECODE(P_IDIOMA,'P','%  Adequacao',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','%  Adequacao','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '03';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '20' THEN    /*Calcula_PesoIdeal_Lorenz(True)*/
         V_RESULT := 0;
         V_PESO   := 0;
         V_ALTURA := 0;
         V_ADEQ   := 0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         V_ALTURA := V_ALTURA*100;
         IF (V_ALTURA <> 0) THEN
            V_RESULT := 0.75 * (V_ALTURA - 150) + 50;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.99'))||'Kg' , DECODE(P_IDIOMA,'P','Peso Ideal(Lorenz) Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal(Lorenz) Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            IF (V_PESO <> 0) THEN
               V_ADEQ := V_PESO * 100 / V_RESULT;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', LTRIM(TO_CHAR(V_ADEQ,'99999.99'))||'%' , DECODE(P_IDIOMA,'P','% Adequacao Lorenz',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','% Adequacao Lorenz','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '21' THEN     /*Calcula_PT_PC*/
         V_TORAX  := 0;
         V_PERCEF := 0;
         V_RESULT := 0;
         V_CLASSIF  := '';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_TORAX
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '20';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_TORAX := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PERCEF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '22';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PERCEF := 0;
         END;
         IF (V_TORAX <> 0) AND (V_PERCEF <> 0) THEN
            V_RESULT := V_TORAX / V_PERCEF;
            IF (TO_NUMBER(P_IDADEANO) = 0) AND (TO_NUMBER(P_IDADEMES) <= 6) THEN
               IF (V_RESULT <= 1) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
               ELSE
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao','','');
               END IF;
            ELSE
               IF (TO_NUMBER(P_IDADEANO) <= 5) THEN
                  IF (V_RESULT > 1) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao','','');
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.99')) , DECODE(P_IDIOMA,'P','PT / PC - Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','PT / PC - Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF , DECODE(P_IDIOMA,'P','PT / PC - Classificacao',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','PT / PC - Classificacao','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '02';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '22' THEN      /*Calcula_PesoIdeal_Imc(True)*/
         V_ALTURA  := 0;
         V_RESULT1 := 0;
         V_RESULT2 := 0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         V_ALTURA := (V_ALTURA*100);
         IF V_ALTURA <> 0 THEN
            V_ALTURA := V_ALTURA / 100;
            V_ALTURA := V_ALTURA * V_ALTURA;
            V_RESULT1 := 18.5 * V_ALTURA;
            V_RESULT2 := 24.9 * V_ALTURA;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT1,'99999.99')) || ' - ' || LTRIM(TO_CHAR(V_RESULT2,'99999.99')) ||'Kg' , DECODE(P_IDIOMA,'P','Peso Ideal(IMC) Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal(IMC) Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '23' THEN     /*Calcula_PesoIdeal_Weech(True)*/
         V_RESULT := 0;
         IF (TO_NUMBER(P_IDADEANO) = 0) AND (TO_NUMBER(P_IDADEMES) < 12) THEN
            V_RESULT := (TO_NUMBER(P_IDADEMES) + 9) / 2;
         ELSE
            IF (TO_NUMBER(P_IDADEANO) >= 1) AND (TO_NUMBER(P_IDADEANO) < 6) THEN
               V_RESULT := (TO_NUMBER(P_IDADEANO) * 2) + 10;
            ELSE
               IF (TO_NUMBER(P_IDADEANO) >= 6) AND (TO_NUMBER(P_IDADEANO) <= 12) THEN
                  V_RESULT := ((TO_NUMBER(P_IDADEANO) * 7) - 5) / 2;
               END IF;
            END IF;
         END IF;
         IF V_RESULT <> 0 THEN
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.99')) , DECODE(P_IDIOMA,'P','Peso Ideal(Weech) Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal(Weech) Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '24' THEN       /*Calcula_PesoIdeal_Idade*/
         V_PESOINF :=0;
         V_PERCENT :=0;
         V_CLASSIF :='';
         V_PESO    :=0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         IF V_PESOINF <> 0 THEN
         BEGIN
            SELECT DECODE(V_IDSEXOPACI,
              1, VRPESOFEMIDA,
                   VRPESOMASIDA) AS VRPESO
              INTO V_PESO
            FROM PESALTIDADE
            WHERE (CDREFEBIBL  = C_AVALIA.CDTABELACO)AND
                  (CDPERCENTIL = '050')              AND
                  (NRIDADEINI  = P_IDADEANO)         AND
                  (NRIDADEFIN  = P_IDADEMES);
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
          V_PESO := 0;
          END;
            /*with cdsPesoIdealIdade do begin
               Data := oleIdade[0];
            end;*/
            IF V_PESO <> 0 THEN
               V_PERCENT := (V_PESOINF * 100) / V_PESO;
               IF (V_PERCENT < 110) THEN
                  IF (V_PERCENT >= 91) AND (V_PERCENT <= 110) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                  END IF;
                  IF (V_PERCENT >= 76) AND (V_PERCENT < 91) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Grau I ou Desnutricao Leve','','');
                  END IF;
                  IF (V_PERCENT >= 61) AND (V_PERCENT < 76) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Grau II ou Desnutricao Moderada','','');
                  END IF;
                  IF (V_PERCENT < 61) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Grau III ou Desnutricao Grave','','');
                  END IF;
               ELSE
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem Classificacao na referencia informada.','','');
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_PERCENT,'99999.99'))||'%' , DECODE(P_IDIOMA,'P','Peso Ideal (Idade) Resultado',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal (Idade) Resultado','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF , DECODE(P_IDIOMA,'P','Peso Ideal (Idade) Classificacao',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal (Idade) Classificacao','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '' , DECODE(P_IDIOMA,'P','Sem Classificacao na referencia informada.',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Sem Classificacao na referencia informada.','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;	 	
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '25' THEN      /*Calcula_PesoIdeal_Altura*/
         V_ALTURA :=0;
         V_RESULT :=0;
         V_CLASSIF:='';
         V_PESOMF :=0;
         V_PESO   :=0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         IF V_ALTURA <> 0 THEN
            IF V_IDSEXOPACI = 1 THEN
              BEGIN
               SELECT NVL(MAX(VRPESOFEMIDA),0) AS VRPESO
                  INTO V_PESOMF
                 FROM PESALTIDADE
                WHERE CDREFEBIBL  = C_AVALIA.CDTABELACO
                  AND NRIDADEINI  = P_IDADEANO
                  AND NRIDADEFIN  = P_IDADEMES
                  AND CDPERCENTIL = '050';
             EXCEPTION 
             WHEN NO_DATA_FOUND THEN
             V_PESOMF := 0;
             END;
             BEGIN
               SELECT NVL(MAX(VRPESOFEMIDA),0) AS VRPESO
                  INTO V_PESO
                 FROM PESALTIDADE
                WHERE CDREFEBIBL   =  C_AVALIA.CDTABELACO
                  AND NRIDADEINI   =  P_IDADEANO
                  AND NRIDADEFIN   =  P_IDADEMES
                  AND VRALTUFEMIDA <= V_ALTURA;
              EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_PESO := 0;
              END;
            ELSE
              BEGIN
               SELECT NVL(MAX(VRPESOMASIDA),0) AS VRPESO
                  INTO V_PESOMF
                 FROM PESALTIDADE
                WHERE CDREFEBIBL  = C_AVALIA.CDTABELACO
                  AND NRIDADEINI  = P_IDADEANO
                  AND NRIDADEFIN  = P_IDADEMES
                  AND CDPERCENTIL = '050';
              EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_PESOMF := 0;
              END;
              BEGIN
               SELECT NVL(MAX(VRPESOMASIDA),0) AS VRPESO
                  INTO V_PESO
                 FROM PESALTIDADE
                WHERE CDREFEBIBL   =  C_AVALIA.CDTABELACO
                  AND NRIDADEINI   =  P_IDADEANO
                  AND NRIDADEFIN   =  P_IDADEMES
                  AND VRALTUMASIDA <= V_ALTURA;
              EXCEPTION
              WHEN NO_DATA_FOUND THEN
                 V_PESO := 0;
              END;
            END IF;
            IF (V_PESOMF  = 0) OR (V_PESO = 0) THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem Classificacao na referencia informada.','','');
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '' , V_CLASSIF);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_CLASSIF
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            ELSE
               V_RESULT := (V_PESO * 100) / V_PESOMF;
               IF V_RESULT < 90 THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem Classificacao na referencia informada.','','');
               ELSE
                  IF (V_RESULT >= 90) AND (V_RESULT <= 110) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofico','','');
                  END IF;
                  IF (V_RESULT > 110) AND (V_RESULT <= 120) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                  END IF;
                  IF (V_RESULT > 120)THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                  END IF;
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.99'))||' %', DECODE(P_IDIOMA,'P','Peso Ideal (Altura) Resultado',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal (Altura) Resultado','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF, DECODE(P_IDIOMA,'P','Peso Ideal (Altura) Classificacao',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso Ideal (Altura) Classificacao','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '26' THEN     /*Calcula_PerdaPeso*/
         V_PESOATUAL:=0;
         V_PESOUSUAL:=0;
         V_RESULT :=0;
         V_CLASSIF :='';
         V_TEMPO :='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOATUAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOATUAL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOUSUAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '35';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOUSUAL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_TEMPO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '36';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_TEMPO := '';
         END;
         IF (V_PESOATUAL <> 0) AND (V_PESOUSUAL <> 0) THEN
            IF (V_PESOUSUAL > V_PESOATUAL) THEN
               V_RESULT := ((V_PESOUSUAL - V_PESOATUAL) * 100) / V_PESOUSUAL;
               IF (V_TEMPO = '1') THEN
                  IF (V_RESULT <= 2) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Moderada','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Servera','','');
                  END IF;
               ELSE
                  IF (V_TEMPO = '2') THEN
                     IF (V_RESULT <= 5) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Moderada','','');
                     ELSE
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Servera','','');
                     END IF;
                  ELSE
                     IF (V_TEMPO = '3') THEN
                        IF (V_RESULT <= 7.5) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Moderada','','');
                        ELSE
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Servera','','');
                        END IF;
                     ELSE
                        IF (V_TEMPO = '4') THEN
                           IF (V_RESULT <= 10) THEN
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Moderada','','');
                           ELSE
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda Servera','','');
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.99'))||' %', DECODE(P_IDIOMA,'P','Perda Peso - Resultado',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Perda Peso - Resultado','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF, DECODE(P_IDIOMA,'P','Perda Peso - Classificacao',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Perda Peso - Classificacao','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', DECODE(P_IDIOMA,'P','Nao houve perda de peso.',''), DECODE(P_IDIOMA,'P','Perda Peso - Resultado',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Perda Peso - Resultado','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '27' THEN           /*Calcula_PesoAjustado_Ob*/
         V_PESO :=NULL;
         V_RESULT :=0;
         V_ALTURA :=0;
         BEGIN
            SELECT TO_CHAR(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := NULL;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         V_ALTURA := V_ALTURA/100;
         V_ALTURA := 24.9 * POWER(V_ALTURA, 2);
         IF (V_PESO IS NOT NULL) THEN
            V_RESULT := V_ALTURA + ((TO_NUMBER(V_PESO) - V_ALTURA) * 0.25);
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), DECODE(P_IDIOMA,'P','Peso ajustado p/ obesos - Resultado',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Peso ajustado p/ obesos - Resultado','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '28' THEN         /*Calcula_MaturacaoSexual*/
         V_PELOS :=NULL;
         V_MAMAGEN :=NULL;
         V_RESULTPELOS :=NULL;
         V_RESULTMAMAGEN:=NULL;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PELOS
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '37';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PELOS := NULL;
         END;
         IF (V_PELOS IS NOT NULL) THEN
            V_MAMAGEN := SUBSTR(V_PELOS,4,2);
            V_PELOS   := SUBSTR(V_PELOS,1,2);
            IF V_IDSEXOPACI = 0 THEN /*avaliacao masculina*/
               /*Resultado da avaliacao dos pelos pubianos*/
               IF V_PELOS = 'P1' THEN /* <11 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,10,11) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,10,11) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P2' THEN /*11 - 15e6 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,6) = -1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,6) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,6) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P3' THEN /*11e9 - 16 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,9,16,11) = -1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,9,16,11) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,9,16,11) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P4' THEN /*12 - 16e6 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,0,16,6) = -1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,0,16,6) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,0,16,6) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P5' THEN  /*13 - 17 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 13,0,17,11) = -1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 13,0,17,11) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 13,0,17,11) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               /*Resultado da avaliacao da genitalia*/
               IF V_MAMAGEN = 'G1' THEN /* < 9e6 anos */
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,9,5) = 0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,9,5) = 1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'G2' THEN    /*9e6 - 13e6 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 9,6,13,6) =-1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 9,6,13,6) =0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 9,6,13,6) =1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'G3' THEN /*10e6 - 15 anos */
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,6,15,11) =-1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,6,15,11) =0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,6,15,11) =1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'G4' THEN /*11e6 - 16 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,6,16,11) = -1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,6,16,11) = 0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,6,16,11) = 1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'G5' THEN /*12e6 - 17 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,6,17,11) = -1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,6,17,11) = 0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,6,17,11) = 1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
            END IF;
            IF V_IDSEXOPACI = 1 THEN /*avaliacao feminina */
               /*Resultado da avaliacao dos pelos pubianos*/
               IF V_PELOS = 'P1' THEN /* <9 anos */
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,8,11) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,8,11) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P2' THEN /*9 - 14 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 9,0,14,11) = -1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 9,0,14,11) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 9,0,14,11) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P3' THEN /*10 - 14e6 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,0,14,6) = -1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,0,14,6) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,0,14,6) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P4' THEN  /*11 - 15 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,11) = -1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,11) = 0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,11) = 1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_PELOS = 'P5' THEN  /*12 - 16e6 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,0,16,6)=-1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,0,16,6)=0 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 12,0,16,6)=1 THEN
                     V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF (V_PELOS IS NULL) THEN
                  V_RESULTPELOS := TRADUCAO(P_IDIOMA,'Nao Avaliado','','');
               END IF;
               /*Resultado da avaliacao da mama:*/
               IF V_MAMAGEN = 'M1' THEN /* < 8 anos */
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,7,11) = 0  THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 0,0,7,11) = 1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'M2' THEN /* 8 - 13 anos */
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 8,0,13,11) = -1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 8,0,13,11) = 0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 8,0,13,11) = 1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'M3' THEN /*10 - 14 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,0,14,11)= -1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,0,14,11)= 0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 10,0,14,11)= 1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'M4' THEN /*11 - 15 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,11)=-1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,11)=0 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 11,0,15,11)=1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
               IF V_MAMAGEN = 'M5' THEN /*13 - 18 anos*/
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 13,0,18,11)=-1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento acima da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 13,0,18,11)=0  THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento dentro da faixa etaria.','','');
                  END IF;
                  IF FAIXAIDADE(P_IDADEANO, P_IDADEMES, 13,0,18,11)=1 THEN
                     V_RESULTMAMAGEN := TRADUCAO(P_IDIOMA,'Desenvolvimento abaixo da faixa etaria.','','');
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_RESULTPELOS, DECODE(P_IDIOMA,'P','Maturacao Sexual - Avaliacao pelos pubianos',''));
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = DECODE(P_IDIOMA,'P','Maturacao Sexual - Avaliacao pelos pubianos','')
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
            IF V_IDSEXOPACI = 0 THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_RESULTMAMAGEN, DECODE(P_IDIOMA,'P','Maturacao Sexual - Avaliacao genitalia',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Maturacao Sexual - Avaliacao genitalia','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_RESULTMAMAGEN, DECODE(P_IDIOMA,'P','Maturacao Sexual - Avaliacao mamas',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Maturacao Sexual - Avaliacao mamas','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '29' THEN           /*Calcula_Siri*/
         V_DENSIDADE:=0;
         V_PESO:=0;
         V_BI:=0;/*prega cutanea biciptal*/
         V_TR:=0;/*prega cutanea triciptal*/
         V_SB:=0;/*prega cutanea subescapular*/
         V_SI:=0;/*prega cutanea suprailiaca*/
         V_CX:=0;/*prega cutanea da coxa*/
         V_PESOGORDO:=0;
         V_MASSAMAGRA:=0;
         V_PORCMASMAG:=0;
         V_PESOIDEAL:=0;
         V_PESOEXC:=0;
         V_PORCGORDU:=0;
         V_IDADE:= TO_NUMBER(P_IDADEANO);
         V_CLASSIF:='';
         V_DSCONTRESU:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_BI
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '03';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_BI := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_TR
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '04';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_TR := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_SB
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '05';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_SB := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_SI
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '06';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_SI := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CX
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '38';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CX := 0;
         END;
         IF (V_PESO > 0) AND (V_BI > 0) AND (V_TR > 0) AND (V_SB > 0) AND (V_SI > 0) AND (V_CX > 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               IF FAIXAIDADE(V_IDADE, 0, 18,0,34,11) = 0 THEN /*(18 -34 anos ) DC = 1,1610 - 0,0632 log (BI+ TR+ SB +SI)*/
                  V_DENSIDADE := 1.1610 - (0.0632 * (LOG(10,V_BI + V_TR + V_SB + V_SI)));
               END IF;
               IF FAIXAIDADE(V_IDADE, 0, 13,0,17,11) = 0 THEN /*(13-17 anos) DC = 1,130 - 0,055 (log10 TR) - 0,026 (log10 SB)*/
                  V_DENSIDADE := 1.130 - (0.055 * (LOG(10,V_TR))) - (0.026 * (LOG(10,V_SB)));
               END IF;
               IF FAIXAIDADE(V_IDADE, 0, 9,0,12,11) = 0 THEN  /*(9-12 ANOS ) DC = 1,108-0,027 (log10 TR) - 0,038 (log10 SB)*/
                  V_DENSIDADE := 1.108 - (0.027 * (LOG(10,V_TR))) - (0.038 * (LOG(10,V_SB)));
               END IF;
            ELSE
               IF FAIXAIDADE(V_IDADE, 0, 18,0,48,11) = 0 THEN /*(18 -48 anos ) DC = 1,06234-0,00068(SB)-0,00039(TR)-0,00025(CX)*/
                  V_DENSIDADE := 1.06234 - (0.00068 * V_SB) - (0.00039 * V_TR) - (0.00025 * V_CX);
               END IF;
               IF FAIXAIDADE(V_IDADE, 0, 13,0,17,11) = 0 THEN /*(13-17 anos ) DC = 1,114-0,031(log10 TR)-0,041(log10 SB)*/
                  V_DENSIDADE := 1.114 - (0.031 * (LOG(10,V_TR))) - (0.041 * (LOG(10,V_SB)));
               END IF;
               IF FAIXAIDADE(V_IDADE, 0, 9,0,12,11) = 0 THEN  /*(9-12 ANOS ) DC = 1,088-0,014 (log 10 TR) - 0,036 ( log10 SB)*/
                  V_DENSIDADE := 1.088 - (0.014 * (LOG(10,V_TR))) - (0.036 * (LOG(10,V_SB)));
               END IF;
            END IF;
            IF V_DENSIDADE <> -1 THEN
               V_PORCGORDU  := ((4.95 / V_DENSIDADE) - 4.50) * 100;
               V_CLASSIF := CLASSIFICAGORDU(V_IDSEXOPACI, V_IDADE, V_PORCGORDU, P_IDIOMA);
               V_PESOGORDO  := (V_PORCGORDU / 100) * V_PESO;
               V_MASSAMAGRA := V_PESO - V_PESOGORDO;
               V_PORCMASMAG := 100 - V_PORCGORDU;
               IF V_IDSEXOPACI = 0 THEN
                  V_PESOIDEAL := V_MASSAMAGRA / 0.85;
               ELSE
                  V_PESOIDEAL := V_MASSAMAGRA / 0.75;
               END IF;
               V_PESOEXC := V_PESO - V_PESOIDEAL;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_DENSIDADE,'99999.999999')), DECODE(P_IDIOMA,'P','Equacao de Siri - Densidade corporal',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Equacao de Siri - Densidade corporal','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
               IF(V_IDADE < 18) THEN
                  V_DSCONTRESU:= TRADUCAO(P_IDIOMA,'Equacao de Siri - Porcentagem de gordura (Deurenberg, P.P. Pieters, J.J.L e Hautuast, J.G.L. - 1990)','','');
               ELSE
                  V_DSCONTRESU:= TRADUCAO(P_IDIOMA,'Equacao de Siri - Porcentagem de gordura (Mcardle - 1992)','','');
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', LTRIM(TO_CHAR(V_PORCGORDU,'99999.99'))||'% - '||V_CLASSIF, V_DSCONTRESU);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_DSCONTRESU
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '03', LTRIM(TO_CHAR(V_PESOGORDO,'99999.99'))||' Kg', DECODE(P_IDIOMA,'P','Equacao de Siri - Peso gordo',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Equacao de Siri - Peso gordo','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '03';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '04', LTRIM(TO_CHAR(V_MASSAMAGRA,'99999.99'))||' Kg', DECODE(P_IDIOMA,'P','Equacao de Siri - Massa Magra',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Equacao de Siri - Massa Magra','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '04';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '05', LTRIM(TO_CHAR(V_PORCMASMAG,'99999.99'))||'%', DECODE(P_IDIOMA,'P','Equacao de Siri - Porcentagem de massa magra',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Equacao de Siri - Porcentagem de massa magra','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '05';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '06', LTRIM(TO_CHAR(V_PESOIDEAL,'99999.99'))||' Kg', DECODE(P_IDIOMA,'P','Equacao de Siri - Peso ideal',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Equacao de Siri - Peso ideal','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '06';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '07', LTRIM(TO_CHAR(V_PESOEXC,'99999.99'))||' Kg', DECODE(P_IDIOMA,'P','Equacao de Siri - Peso em excesso',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Equacao de Siri - Peso em excesso','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '07';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF (C_AVALIA.CDTBMETOAVAL = '37') OR (C_AVALIA.CDTBMETOAVAL = '38') OR (C_AVALIA.CDTBMETOAVAL = '39') OR       /*Calcula_PesoIdadeAltura*/
         (C_AVALIA.CDTBMETOAVAL = '40') OR (C_AVALIA.CDTBMETOAVAL = '41') OR (C_AVALIA.CDTBMETOAVAL = '42') OR
         (C_AVALIA.CDTBMETOAVAL = '43') OR (C_AVALIA.CDTBMETOAVAL = '44') OR (C_AVALIA.CDTBMETOAVAL = '45') OR
         (C_AVALIA.CDTBMETOAVAL = '46') OR (C_AVALIA.CDTBMETOAVAL = '47') THEN
         V_PESOINF:=0;
         V_ALTURAINF:=0;
         V_CLASSIF:='';
         V_DESC:='';
         V_NCLASSIF:='';
         V_CDPERCENTIL:='';
         V_MENOR:='';
         V_NMPERCENTIL:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURAINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURAINF := 0;
         END;
         /*se forem os metodos relacionados a Peso por Idade*/
         IF(INSTR(P_CDAVALIA, '37') > 0) OR (INSTR(P_CDAVALIA, '38') > 0) OR (INSTR(P_CDAVALIA, '43') > 0) THEN
            IF(V_PESOINF > 0) THEN
               IF(V_IDSEXOPACI = 1) THEN
                  BEGIN
                     SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                        INTO V_CDPERCENTIL, V_NMPERCENTIL
                       FROM (SELECT MAX(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                              FROM PESALTIDADE
                             WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                               AND (V_PESOINF >= VRPESOFEMIDA)
                               AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                               AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                      WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_CDPERCENTIL := '';
                  END;
                  V_MENOR := 'N';
                  IF (V_CDPERCENTIL IS NULL) THEN
                     BEGIN
                        SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                           INTO V_CDPERCENTIL, V_NMPERCENTIL
                          FROM (SELECT MIN(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                                  FROM PESALTIDADE
                                 WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                                   AND (V_PESOINF <= VRPESOFEMIDA)
                                   AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                                   AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                         WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_CDPERCENTIL:='';
                     END;
                     V_MENOR := 'S';
                  END IF;
               ELSE
                  BEGIN
                     SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                        INTO V_CDPERCENTIL, V_NMPERCENTIL
                       FROM (SELECT MAX(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                              FROM PESALTIDADE
                             WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                               AND (V_PESOINF >= VRPESOMASIDA)
                               AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                               AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                      WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_CDPERCENTIL:= '';
                  END;
                  V_MENOR := 'N';
                  IF (V_CDPERCENTIL IS NULL) THEN
                     BEGIN
                        SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                           INTO V_CDPERCENTIL, V_NMPERCENTIL
                          FROM (SELECT MIN(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                                  FROM PESALTIDADE
                                 WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                                   AND (V_PESOINF <= VRPESOMASIDA)
                                   AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                                   AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                        WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_CDPERCENTIL:='';
                     END;
                     V_MENOR := 'S';
                  END IF;
               END IF;
            END IF;
         END IF;
         /*se forem os metodos relacionados a Altura por Idade*/
         IF (INSTR(P_CDAVALIA, '39') > 0) OR (INSTR(P_CDAVALIA, '40') > 0) OR
            (INSTR(P_CDAVALIA, '44') > 0) OR (INSTR(P_CDAVALIA, '45') > 0) THEN
            IF(V_ALTURAINF > 0) THEN
               IF(V_IDSEXOPACI = 1) THEN
                  BEGIN
                     SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                        INTO V_CDPERCENTIL, V_NMPERCENTIL
                       FROM (SELECT MAX(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                              FROM PESALTIDADE
                             WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                               AND ((V_ALTURAINF*100) >= VRALTUFEMIDA)
                               AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                               AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                      WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_CDPERCENTIL:='';
                  END;
                  V_MENOR := 'N';
                  IF (V_CDPERCENTIL IS NULL) THEN
                     BEGIN
                        SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                           INTO V_CDPERCENTIL, V_NMPERCENTIL
                          FROM (SELECT MIN(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                                  FROM PESALTIDADE
                                 WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                                   AND ((V_ALTURAINF*100) <= VRALTUFEMIDA)
                                   AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                                   AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                         WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_CDPERCENTIL := '';
                     END;
                     V_MENOR := 'S';
                  END IF;
               ELSE
                  BEGIN
                     SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                        INTO V_CDPERCENTIL, V_NMPERCENTIL
                       FROM (SELECT MAX(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                              FROM PESALTIDADE
                             WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                               AND ((V_ALTURAINF*100) >= VRALTUMASIDA)
                               AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                               AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                      WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_CDPERCENTIL := '';
                  END;
                  V_MENOR := 'N';
                  IF (V_CDPERCENTIL IS NULL) THEN
                     BEGIN
                         SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                           INTO V_CDPERCENTIL, V_NMPERCENTIL
                             FROM (SELECT MIN(PESALTIDADE.CDPERCENTIL) AS CDPERCENTIL
                                     FROM PESALTIDADE
                                    WHERE CDREFEBIBL = C_AVALIA.CDTABELACO
                                      AND ((V_ALTURAINF*100) <= VRALTUMASIDA)
                                      AND NRIDADEINI = TO_NUMBER(P_IDADEANO)
                                      AND NRIDADEFIN = TO_NUMBER(P_IDADEMES)) CP, PERCENTIL
                            WHERE PERCENTIL.CDPERCENTIL = CP.CDPERCENTIL;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_CDPERCENTIL := '';
                     END;
                     V_MENOR := 'S';
                  END IF;
               END IF;
            END IF;
         END IF;
         /*se forem os metodos relacionados a Altura por Peso*/
         IF (INSTR(P_CDAVALIA, '41') > 0) OR (INSTR(P_CDAVALIA, '42') > 0) OR
            (INSTR(P_CDAVALIA, '46') > 0) OR (INSTR(P_CDAVALIA, '47') > 0) THEN
            IF (V_PESOINF > 0) AND (V_ALTURAINF > 0) THEN
               IF (V_IDSEXOPACI = 1) THEN
                  BEGIN
                     SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                        INTO V_CDPERCENTIL, V_NMPERCENTIL
                       FROM (SELECT MAX(PESOALTU.CDPERCENTIL) AS CDPERCENTIL
                               FROM PESOALTU
                              WHERE (VRPESOFEMALT <= V_PESOINF)
                                AND VRALTURA = (V_ALTURAINF*100)
                                AND CDREFEBIBL = C_AVALIA.CDTABELACO) CP, PERCENTIL
                      WHERE CP.CDPERCENTIL = PERCENTIL.CDPERCENTIL;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_CDPERCENTIL:= '';
                  END;
                  V_MENOR := 'N';
                  IF (V_CDPERCENTIL IS NULL) THEN
                     BEGIN
                         SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                           INTO V_CDPERCENTIL, V_NMPERCENTIL
                          FROM (SELECT MIN(PESOALTU.CDPERCENTIL) AS CDPERCENTIL
                                  FROM PESOALTU
                                 WHERE (VRPESOFEMALT >= V_PESOINF)
                                   AND VRALTURA = (V_ALTURAINF*100)
                                   AND CDREFEBIBL = C_AVALIA.CDTABELACO) CP, PERCENTIL
                         WHERE CP.CDPERCENTIL = PERCENTIL.CDPERCENTIL;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_CDPERCENTIL:='';
                     END;
                     V_MENOR := 'S';
                  END IF;
               ELSE
                  BEGIN
                     SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                        INTO V_CDPERCENTIL, V_NMPERCENTIL
                       FROM (SELECT MAX(PESOALTU.CDPERCENTIL) AS CDPERCENTIL
                               FROM PESOALTU
                              WHERE (VRPESOMASALT <= V_PESOINF)
                                AND VRALTURA = (V_ALTURAINF*100)
                                AND CDREFEBIBL = C_AVALIA.CDTABELACO) CP, PERCENTIL
                      WHERE CP.CDPERCENTIL = PERCENTIL.CDPERCENTIL;
                  EXCEPTION
                     WHEN NO_DATA_FOUND THEN
                        V_CDPERCENTIL:='';
                  END;
                  V_MENOR := 'N';
                  IF (V_CDPERCENTIL IS NULL) THEN
                     BEGIN
                        SELECT PERCENTIL.CDPERCENTIL, PERCENTIL.NMPERCENTIL
                           INTO V_CDPERCENTIL, V_NMPERCENTIL
                          FROM (SELECT MIN(PESOALTU.CDPERCENTIL) AS CDPERCENTIL
                                  FROM PESOALTU
                                 WHERE (VRPESOMASALT >= V_PESOINF)
                                   AND VRALTURA = (V_ALTURAINF*100)
                                   AND CDREFEBIBL = C_AVALIA.CDTABELACO) CP, PERCENTIL
                         WHERE CP.CDPERCENTIL = PERCENTIL.CDPERCENTIL;
                     EXCEPTION
                        WHEN NO_DATA_FOUND THEN
                           V_CDPERCENTIL:='';
                     END;
                     V_MENOR := 'S';
                  END IF;
               END IF;
            END IF;
         END IF;
         IF (V_PESOINF > 0) AND (V_ALTURAINF > 0) THEN
            IF(V_CDPERCENTIL IS NOT NULL) THEN
               /*se houver algum percentil menor que 0.1 cadastrado ele pode entrar nessa validacao*/
               IF (V_CDPERCENTIL < '0.1') THEN
                  V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' < '||'0.1';
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Peso muito baixo para a Idade','','');
               ELSE
                  /*o percentil pode ser igual a 0.1 por causa da pesquisa de menor percentil
                  portanto tem que validar a boMenor*/
                  IF (V_CDPERCENTIL >= '0.1') AND (V_CDPERCENTIL < '003') THEN
                     IF V_CDPERCENTIL = '0.1' THEN
                        IF (V_MENOR = 'S') THEN
                           V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' < '||'0.1';
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Peso muito baixo para a Idade','','');
                        ELSE
                           V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' '||'0.1';
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Peso baixo para a Idade','','');
                        END IF;
                     ELSE
                        V_DESC := V_NMPERCENTIL;
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Peso baixo para a Idade','','');
                     END IF;
                  ELSE
                     IF (V_CDPERCENTIL >= '003') AND (V_CDPERCENTIL < '010') THEN
                        IF V_CDPERCENTIL = '003' THEN
                           IF (V_MENOR = 'S') THEN
                              V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' < '||' 3';
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Peso baixo para a Idade','','');
                           ELSE
                              V_DESC := V_NMPERCENTIL;
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco Nutricional','','');
                           END IF;
                        ELSE
                           V_DESC := V_NMPERCENTIL;
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco Nutricional','','');
                        END IF;
                     ELSE
                        IF (V_CDPERCENTIL >= '010') AND (V_CDPERCENTIL < '097') THEN
                           IF V_CDPERCENTIL = '010' THEN
                              IF (V_MENOR = 'S') THEN
                                 V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' < '||' 10';
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco Nutricional','','');
                              ELSE
                                 V_DESC := V_NMPERCENTIL;
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico','','');
                              END IF;
                           ELSE
                              V_DESC := V_NMPERCENTIL;
                              V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico','','');
                           END IF;
                        ELSE
                           IF (V_CDPERCENTIL >= '097') THEN
                              IF V_CDPERCENTIL = ('097') THEN
                                 IF (V_MENOR = 'S') THEN
                                    V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' < '||' 97';
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico','','');
                                 ELSE
                                    V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' >= '||' 97';
                                    V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco de sobrepeso','','');
                                 END IF;
                              ELSE
                                 V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' >= '||' 97';
                                 V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco de sobrepeso','','');
                              END IF;
                           END IF;
                        END IF;
                     END IF;
                  END IF;
               END IF;
            ELSE
               V_NCLASSIF := TRADUCAO(P_IDIOMA,'Sem classificacao na referencia informada.','','');
            END IF;
            IF (V_NCLASSIF IS NOT NULL) THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_CLASSIF, V_DESC);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_DESC
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '', V_NCLASSIF);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_NCLASSIF
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '48' THEN        /*Calcula_IMCAdolescente*/
         V_PESOINF := 0;
         V_ALTURAINF := 0;
         V_RESULT := 0;
         V_CDTABELA := '';
         V_CLASSIF :='';
         V_DESC :='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURAINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURAINF := 0;
         END;
         IF (V_PESOINF > 0) AND (V_ALTURAINF > 0) THEN
            V_RESULT := V_PESOINF / POWER((V_ALTURAINF), 2);
            BEGIN
            SELECT MIN(DIET.CDPERCENTIL)
              INTO V_CDPERCENTIL
              FROM TABEVRDIET DIET
             WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
               AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
               AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
          EXCEPTION
          WHEN NO_DATA_FOUND THEN
           V_CDPERCENTIL := NULL;
          END;
              /* with cdsPesqPer do begin
                   Data := olePercentil[0];
                 end;*/
                 BEGIN
                 SELECT  VRPERCENTIL,NMPERCENTIL, CDPERCENTIL, NMREFEBIBL,CDREFEBIBL
              INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR
            FROM(SELECT MIN(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL

              FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
             WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
               AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
               AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
               AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) >= V_RESULT)
               AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
               AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1)
            WHERE ROWNUM = 1;
            EXCEPTION 
            WHEN NO_DATA_FOUND THEN
            V_VRPERCENTILMENOR := 0;
            V_NMPERCENTILMENOR := NULL;
            V_CDPERCENTILMENOR := NULL;
            V_NMREFEMENOR := NULL;
            V_CDREFEMENOR := NULL;
            END;
            /* with cdsPercentilMenor do begin
                  Data := olePercentil[2];
               end; */
               BEGIN
              SELECT  VRPERCENTIL, NMPERCENTIL, CDPERCENTIL,NMREFEBIBL, CDREFEBIBL
              INTO V_VRPERCENTILMAIOR, V_NMPERCENTILMAIOR, V_CDPERCENTILMAIOR, V_NMRFEMAIOR, V_CDREFEMAIOR
           FROM( SELECT MAX(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL

              FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
             WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
               AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
               AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
               AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) <= V_RESULT)
               AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
               AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1 DESC)
            WHERE ROWNUM =1;
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
             V_VRPERCENTILMAIOR := 0;
             V_NMPERCENTILMAIOR := NULL;
             V_CDPERCENTILMAIOR := NULL;
             V_NMRFEMAIOR := NULL;
             V_CDREFEMAIOR := NULL;
            END;
            /* with cdsPercentilMaior do begin
                Data := olePercentil[1];
              end; */
            IF (V_CDPERCENTILMENOR IS NOT NULL) THEN
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_CDTABELA := V_CDPERCENTILMAIOR;
               ELSE
                  V_CDTABELA := V_CDPERCENTILMENOR;
               END IF;
               IF (V_CDTABELA = V_CDPERCENTIL) AND (V_RESULT < V_VRPERCENTILMENOR) THEN
                  V_CDTABELA := '001';
               END IF;
            ELSE
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_CDTABELA := V_CDPERCENTILMAIOR;
                  IF (V_CDTABELA = V_CDPERCENTIL) AND (V_RESULT > V_VRPERCENTILMAIOR) THEN
                     V_CDTABELA := '999';
                  END IF;
               END IF;
            END IF;
            IF (V_CDTABELA IS NOT NULL) THEN
               IF (V_CDTABELA < '005') THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixo Peso','','');
                  V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' < 5';
               ELSE
                  IF (V_CDTABELA >= '005') AND (V_CDTABELA < '085') THEN
                     IF V_CDTABELA = '005' THEN
                        V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' 5';
                     ELSE
                        V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' '||TRADUCAO(P_IDIOMA,'Entre','','')||' 5 - 85';
                     END IF;
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico','','');
                  ELSE
                     V_DESC := TRADUCAO(P_IDIOMA,'Percentil','','')||' > 85';
                     V_CLASSIF:= TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                  END IF;
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', V_DESC, V_CLASSIF);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_CLASSIF
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '', DECODE(P_IDIOMA,'P','Sem Classificacao na referencia informada.',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Sem Classificacao na referencia informada.','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '49' THEN             /*Calcula_IMCOms98*/
         V_PESOINF   := 0;
         V_ALTURAINF := 0;
         V_RESULT    := 0;
         V_CLASSIF   :='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURAINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURAINF := 0;
         END;
         IF (V_PESOINF > 0) AND (V_ALTURAINF > 0) THEN
            V_RESULT := V_PESOINF / POWER((V_ALTURAINF), 2);
            IF TRUNC(V_RESULT, 3) < 18.5 THEN
               V_CLASSIF :=  TRADUCAO(P_IDIOMA,'Baixo Peso','','');
            ELSE
               IF (TRUNC(V_RESULT, 3) >= 18.5) AND (TRUNC(V_RESULT, 3) < 25) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico','','');
               ELSE
                  IF (TRUNC(V_RESULT, 3) >= 25) AND (TRUNC(V_RESULT, 3) < 30) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                  ELSE
                     IF (TRUNC(V_RESULT, 3) >= 30) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                     END IF;
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '50' THEN             /*Calcula_RCQOms98*/
         V_CIRCCIN :=0;
         V_CIRCQUAD :=0;
         V_RESULT  :=0;
         V_CLASSIF :='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CIRCQUAD
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '10';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CIRCQUAD := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CIRCCIN
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '11';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CIRCCIN := 0;
         END;
         IF(V_CIRCCIN > 0) AND (V_CIRCQUAD > 0) THEN
            V_RESULT := V_CIRCCIN / V_CIRCQUAD;
            IF V_IDSEXOPACI = 0 THEN
               IF TRUNC(V_RESULT, 2) > 1 THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco de Complicacoes Metabolicas','','');
               ELSE
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem Risco de Complicacoes Metabolicas','','');
               END IF;
            ELSE
               IF (TRUNC(V_RESULT, 2) > 0.85) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco de Complicacoes Metabolicas','','');
               ELSE
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem Risco de Complicacoes Metabolicas','','');
               END IF;
            END IF;
         END IF;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.99')), DECODE(P_IDIOMA,'P','RCQ Resultado',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','RCQ Resultado','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '01';
            END;
         END;
         BEGIN
            INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
            VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_CLASSIF, DECODE(P_IDIOMA,'P','RCQ Classificacao',''));
         EXCEPTION
            WHEN DUP_VAL_ON_INDEX THEN BEGIN
               UPDATE RESUAVAL
                  SET DSCONTRESU = DECODE(P_IDIOMA,'P','RCQ Classificacao','')
               WHERE CDFILIAL = P_CDFILIAL
                 AND CDPACIENTE = P_CDPACIENTE
                 AND DTCONSPACI = P_DTCONSPACI
                 AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                 AND CDSEQUAVAL = '02';
            END;
         END;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '51' THEN         /*Calcula_CircCintOms98*/
         V_CIRCCIN :=0;
         V_CLASSIF :='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CIRCCIN
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '11';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CIRCCIN := 0;
         END;
         IF (V_CIRCCIN > 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               IF V_CIRCCIN < 94 THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem Risco de Complicacoes Metabolicas','','');
               ELSE
                  IF (V_CIRCCIN >= 94) AND (V_CIRCCIN < 102) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco elevado de Complicacoes','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco muito elevado de Complicacoes','','');
                  END IF;
               END IF;
            ELSE
               IF V_CIRCCIN < 80 THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem Risco de Complicacoes Metabolicas','','');
               ELSE
                  IF (V_CIRCCIN >= 80) AND (V_CIRCCIN < 88) THEN
                     V_CLASSIF:= TRADUCAO(P_IDIOMA,'Risco elevado de Complicacoes','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Risco muito elevado de Complicacoes','','');
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_CIRCCIN,'99999.999')), V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '52' THEN        /*Calcula_PesoChumlea85*/
         V_ALTJOE :=0;
         V_CB :=0;
         V_CIRCPANT := 0;
         V_PCS := 0;
         V_RESULT := 0;
         V_CLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PCS
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '05';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCS := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CB
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '08';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CB := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTJOE
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '09';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTJOE := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CIRCPANT
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '12';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CIRCPANT := 0;
         END;
         IF (V_PCS > 0) AND (V_CB > 0) AND (V_ALTJOE > 0) AND (V_CIRCPANT > 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               V_RESULT := (0.98 * V_CIRCPANT) + (1.16 * V_ALTJOE) + (1.73 * V_CB) + (0.37 * V_PCS) - 81.69;
            ELSE
               V_RESULT := (1.27 * V_CIRCPANT) + (0.87 * V_ALTJOE) + (0.98 * V_CB) + (0.40 * V_PCS) - 62.35;
            END IF;
            IF V_RESULT < 0 THEN
               V_RESULT := 0;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||'Kg', V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '53' THEN       /*Calcula_AlturaChumlea85*/
         V_ALTJOE:=0;
         V_RESULT:=0;
         V_CLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTJOE
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '09';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTJOE := 0;
         END;
         IF V_ALTJOE > 0 THEN
            IF V_IDSEXOPACI = 0 THEN
               V_RESULT := (2.02 * V_ALTJOE) - (0.04 * TO_NUMBER(P_IDADEANO)) + 64.19;
            ELSE
               V_RESULT := (1.83 * V_ALTJOE) - (0.24 * TO_NUMBER(P_IDADEANO)) + 84.88;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' Cm', V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '54' THEN             /*Calcula_Comp_OsseaML83*/
         V_ALTURA:=0;
         V_COMPOSS:=0;
         V_RESULT:=0;
         V_CLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_COMPOSS
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '07';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_COMPOSS := 0;
         END;
         IF (V_ALTURA > 0) AND (V_COMPOSS > 0) THEN
            V_RESULT := (V_ALTURA * 100) / V_COMPOSS;
            IF V_IDSEXOPACI = 0 THEN
               IF TRUNC(V_RESULT, 3) > 10.4 THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Pequena','','');
               ELSE
                  IF TRUNC(V_RESULT, 3) < 9.6 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Grande','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Media','','');
                  END IF;
               END IF;
            ELSE
               IF TRUNC(V_RESULT, 3) > 10.9 THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Pequena','','');
               ELSE
                  IF TRUNC(V_RESULT, 3) < 9.4 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Grande','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Media','','');
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '55' THEN         /*Calcula_AdeqPes*/
         V_PATU   :=0;
         V_PIDEAL :=0;
         V_RESULT :=0;
         V_CLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PIDEAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '17';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PIDEAL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PATU
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '39';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PATU := 0;
         END;
         IF (V_PIDEAL > 0) AND (V_PATU > 0) THEN
            V_RESULT := (V_PATU * 100) / V_PIDEAL;
            IF (TRUNC(V_RESULT, 3) < 70.1) THEN
               V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Grave','','');
            ELSE
               IF (TRUNC(V_RESULT, 3) >= 70.1) AND (TRUNC(V_RESULT, 3) < 80.1) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Moderada','','');
               ELSE
                  IF (TRUNC(V_RESULT, 3) >= 80.1) AND (TRUNC(V_RESULT, 3) < 90.1) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Leve','','');
                  ELSE
                     IF (TRUNC(V_RESULT, 3) >= 90.1) AND (TRUNC(V_RESULT, 3) < 110.1) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Eutrofia','','');
                     ELSE
                        IF (TRUNC(V_RESULT, 3) >= 110.1) AND (TRUNC(V_RESULT, 3) < 120) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                        ELSE
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' %', V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '56' THEN           /*Calcula_PerPes*/
         V_PUSU:=0;
         V_PATU:=0;
         V_RESULT:=0;
         V_CLASSIF:='';
         V_TEMPO:=NULL;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PUSU
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '35';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PUSU := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_TEMPO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '36';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_TEMPO := NULL;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PATU
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '39';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PATU := 0;
         END;
         IF (V_TEMPO IS NOT NULL) AND (V_PUSU > 0) AND (V_PATU > 0) THEN
            IF V_PATU < V_PUSU THEN
               V_RESULT := ((V_PUSU - V_PATU) * 100) / V_PUSU;
               /*tempo = 1 semana*/
               IF V_TEMPO = '1' THEN
                  IF TRUNC(V_RESULT, 3) < 1 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem perda signIFicativa de peso.','','');
                  ELSE
                     IF (TRUNC(V_RESULT, 3) >= 1) AND (TRUNC(V_RESULT, 3) <= 2) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda signIFicativa de peso.','','');
                     ELSE
                        IF TRUNC(V_RESULT, 3) > 2 THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda grave de peso.','','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
               /*tempo = 1 mes*/
               IF V_TEMPO = '2' THEN
                  IF TRUNC(V_RESULT, 3) < 5 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem perda signIFicativa de peso.','','');
                  ELSE
                     IF TRUNC(V_RESULT, 3) = 5 THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda signIFicativa de peso.','','');
                     ELSE
                        IF TRUNC(V_RESULT, 3) > 5 THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda grave de peso.','','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
               /*tempo = 3 meses */
               IF V_TEMPO = '3' THEN
                  IF TRUNC(V_RESULT, 3) < 7.5 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem perda signIFicativa de peso.','','');
                  ELSE
                     IF TRUNC(V_RESULT, 3) = 7.5 THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda signIFicativa de peso.','','');
                     ELSE
                        IF TRUNC(V_RESULT, 3) > 7.5 THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda grave de peso.','','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
               /*tempo = 6 meses */
               IF V_TEMPO = '4' THEN
                  IF TRUNC(V_RESULT, 3) < 10 THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sem perda signIFicativa de peso.','','');
                  ELSE
                     IF TRUNC(V_RESULT, 3) = 10 THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda signIFicativa de peso.','','');
                     ELSE
                        IF TRUNC(V_RESULT, 3) > 10 THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Perda grave de peso.','','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' %', V_CLASSIF);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_CLASSIF
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '', DECODE(P_IDIOMA,'P','Nao houve perda de peso.',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Nao houve perda de peso.','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '57' THEN            /*Calcula_PesAjust*/
         V_PATU:=0;
         V_PIDEAL:=0;
         V_RESULT:=0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PATU
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '39';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PATU := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PIDEAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '17';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PIDEAL := 0;
         END;
         IF (V_PIDEAL > 0) AND (V_PATU > 0) THEN
            V_RESULT := (V_PIDEAL - V_PATU) * 0.25 + V_PATU;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||'Kg', '');
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = ''
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '58' THEN          /*Calcula_PesEdema*/
         V_PESO:=0;
         V_SUBPES:=0;
         V_RESULT:=0;
         V_EDAN:='';
         V_EDJO:='';
         V_EDRC:='';
         V_EDTO:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_EDTO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '40';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_EDTO := '';
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_EDJO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '41';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_EDJO := '';
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_EDRC
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '42';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_EDRC := '';
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_EDAN
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '43';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_EDAN := '';
         END;
         IF V_EDTO = '1' THEN
            V_SUBPES := V_SUBPES + 1;
         END IF;
         IF V_EDJO = '1' THEN
            V_SUBPES := V_SUBPES + 3.5;
         END IF;
         IF V_EDRC = '1' THEN
            V_SUBPES := V_SUBPES + 5.5;
         END IF;
         IF V_EDAN = '1' THEN
            V_SUBPES := V_SUBPES + 11;
         END IF;
         IF (V_SUBPES > 0) AND (V_PESO > 0) THEN
            V_RESULT := V_PESO - V_SUBPES;
            IF V_EDTO = '1' THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' Kg', DECODE(P_IDIOMA,'P','+  Tornozelo','')||'  1 '||'Kg');
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','+  Tornozelo','')||'  1 '||'Kg'
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
            IF V_EDJO = '1' THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' Kg', DECODE(P_IDIOMA,'P','++  Joelho','')||'  '||LTRIM(TO_CHAR(3.5,'99999.999'))||' Kg');
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','++  Joelho','')||'  '||LTRIM(TO_CHAR(3.5,'99999.999'))||' Kg'
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
            END IF;
            IF V_EDRC = '1' THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '03', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' Kg', DECODE(P_IDIOMA,'P','+++  Raiz da Coxa','')||'  '||LTRIM(TO_CHAR(5.5,'99999.999'))||' Kg');
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','+++  Raiz da Coxa','')||'  '||LTRIM(TO_CHAR(5.5,'99999.999'))||' Kg'
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '03';
                  END;
               END;
            END IF;
            IF V_EDAN = '1' THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '04', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' Kg', DECODE(P_IDIOMA,'P','++++  Anasarca','')||'  11 '||'Kg');
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','++++  Anasarca','')||'  11 '||'Kg'
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '04';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '59' THEN             /*Calcula_PesAmpu*/
         V_PESO:=0;
         V_PERCENT:=0;
         V_RESULT:=0;
         V_MAOINF:=0;
         V_MAOUND:=0;
         V_ANTBRINF:=0;
         V_ANTBRUND:=0;
         V_BROINF:=0;
         V_BROUND:=0;
         V_PEINF:=0;
         V_PEUND:=0;
         V_PABJINF:=0;
         V_PABJUND:=0;
         V_PACJINF:=0;
         V_PACJUND:=0;
         V_PERIINF:=0;
         V_PERIUND:=0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         /*Membro - Mao*/
         BEGIN
            SELECT TO_NUMBER(MAX(IA.DSINFOAVAL)),TO_NUMBER(MAX(IA.DSOBSERAVAL))
              INTO V_MAOINF, V_MAOUND
            FROM INFOAVAL IA
            WHERE IA.CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND IA.CDTIPODADO = '44';
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
               V_MAOINF := 0;
               V_MAOUND := 0;
         END;
         IF (V_MAOINF > 0)AND(V_MAOUND > 0) THEN
            V_PERCENT := V_PERCENT + V_MAOINF * V_MAOUND * 0.008;
         END IF;
         /*Membro - Antebraco*/
         BEGIN
            SELECT TO_NUMBER(MAX(IA.DSINFOAVAL)),TO_NUMBER(MAX(IA.DSOBSERAVAL))
              INTO V_ANTBRINF,V_ANTBRUND
            FROM INFOAVAL IA
            WHERE IA.CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND IA.CDTIPODADO = '45';
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
               V_ANTBRINF := 0;
               V_ANTBRUND := 0;
         END;
         IF (V_ANTBRINF > 0)AND(V_ANTBRUND > 0) THEN
            V_PERCENT := V_PERCENT + V_ANTBRINF * V_ANTBRUND * 0.023;
         END IF;
         /*Membro - Braco ate o ombro*/
         BEGIN
            SELECT TO_NUMBER(MAX(IA.DSINFOAVAL)),TO_NUMBER(MAX(IA.DSOBSERAVAL))
              INTO V_BROINF, V_BROUND
            FROM INFOAVAL IA
            WHERE IA.CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND IA.CDTIPODADO = '46';
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
               V_BROINF := 0;
               V_BROUND := 0;
         END;
         IF (V_BROINF > 0)AND(V_BROUND > 0) THEN
            V_PERCENT := V_PERCENT + V_BROINF * V_BROUND * 0.066;
         END IF;
         /*Membro - Pe*/
         BEGIN
            SELECT TO_NUMBER(MAX(IA.DSINFOAVAL)),TO_NUMBER(MAX(IA.DSOBSERAVAL))
              INTO V_PEINF, V_PEUND
            FROM INFOAVAL IA
            WHERE IA.CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND IA.CDTIPODADO = '47';
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
               V_PEINF := 0;
               V_PEUND := 0;
         END;
         IF (V_PEINF > 0)AND(V_PEUND > 0) THEN
            V_PERCENT := V_PERCENT + V_PEINF * V_PEUND * 0.017;
         END IF;
         /*Membro - Perna abaixo do joelho*/
         BEGIN
            SELECT TO_NUMBER(MAX(IA.DSINFOAVAL)),TO_NUMBER(MAX(IA.DSOBSERAVAL))
              INTO V_PABJINF, V_PABJUND
            FROM INFOAVAL IA
            WHERE IA.CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND IA.CDTIPODADO = '48';
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
               V_PABJINF := 0;
               V_PABJUND := 0;
         END;
         IF (V_PABJINF > 0)AND(V_PABJUND > 0) THEN
            V_PERCENT := V_PERCENT + V_PABJINF * V_PABJUND * 0.017;
         END IF;
         /*Membro - Perna acima do joelho*/
         BEGIN
            SELECT TO_NUMBER(MAX(IA.DSINFOAVAL)),TO_NUMBER(MAX(IA.DSOBSERAVAL))
              INTO V_PACJINF, V_PACJUND
            FROM INFOAVAL IA
            WHERE IA.CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND IA.CDTIPODADO = '49';
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
               V_PACJINF := 0;
               V_PACJUND := 0;
         END;
         IF (V_PACJINF > 0)AND(V_PACJUND > 0) THEN
            V_PERCENT := V_PERCENT + V_PACJINF * V_PACJUND * 0.11;
         END IF;
         /*Membro - Perna inteira*/
         BEGIN
            SELECT TO_NUMBER(MAX(IA.DSINFOAVAL)),TO_NUMBER(MAX(IA.DSOBSERAVAL))
              INTO V_PERIINF, V_PERIUND
            FROM INFOAVAL IA
            WHERE IA.CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND IA.CDTIPODADO = '50';
         EXCEPTION
           WHEN NO_DATA_FOUND THEN
               V_PERIINF := 0;
               V_PERIUND := 0;
         END;
         IF (V_PERIINF > 0)AND(V_PERIUND > 0) THEN
            V_PERCENT := V_PERCENT + V_PERIINF * V_PERIUND * 0.186;
         END IF;
         IF (V_PERCENT > 0) AND (V_PESO > 0) THEN
            V_RESULT := V_PESO - (V_PERCENT * V_PESO);
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '04', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' Kg','');
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = ''
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '04';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '60' THEN                /*Calcula_AMBC*/
         V_CB:=0;
         V_PCT:=0;
         V_RESULT:=0;
         V_NMTABELA:='';
         V_CDTABELA:='';
         V_NMREFE:='';
         V_CLASSIF:='';
         V_NCLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PCT
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '04';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PCT := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_CB
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '08';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_CB := 0;
         END;
         IF (V_PCT > 0) AND (V_CB > 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               V_RESULT := (POWER((V_CB * 10) - V_PI * V_PCT, 2)) / (4 * V_PI) - 10;
            ELSE
               V_RESULT := (POWER((V_CB * 10) - V_PI * V_PCT, 2)) / (4 * V_PI) - 6.5;
            END IF;
            BEGIN
            SELECT MIN(DIET.CDPERCENTIL)
              INTO V_CDPERCENTIL
              FROM TABEVRDIET DIET
             WHERE DIET.CDREFEBIBL = C_AVALIA.CDTABELACO
               AND DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
               AND(TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI);
               EXCEPTION
               WHEN NO_DATA_FOUND THEN
                  V_CDPERCENTIL:= NULL;
               END;
              /* with cdsPesqPer do begin
                   Data := olePercentil[0];
                 end;*/
                 BEGIN
                 SELECT VRPERCENTIL,NMPERCENTIL,CDPERCENTIL, NMREFEBIBL,CDREFEBIBL
              INTO V_VRPERCENTILMENOR, V_NMPERCENTILMENOR, V_CDPERCENTILMENOR, V_NMREFEMENOR, V_CDREFEMENOR           
            FROM(SELECT MIN(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL

              FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
             WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
               AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
               AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
               AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) >= V_RESULT)
               AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
               AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1)
            WHERE ROWNUM = 1;
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
            V_VRPERCENTILMENOR := 0;
            V_NMPERCENTILMENOR := NULL;
            V_CDPERCENTILMENOR := NULL;
            V_NMREFEMENOR:= NULL;
            V_CDREFEMENOR := NULL;
            END;
            /* with cdsPercentilMenor do begin
                  Data := olePercentil[2];
               end; */
               BEGIN
               SELECT  VRPERCENTIL,NMPERCENTIL,CDPERCENTIL,NMREFEBIBL,CDREFEBIBL
              INTO V_VRPERCENTILMAIOR, V_NMPERCENTILMAIOR, V_CDPERCENTILMAIOR, V_NMRFEMAIOR, V_CDREFEMAIOR
           FROM( SELECT MAX(DECODE(V_IDSEXOPACI,
                              0, DIET.VRSEXOMASC,
                              1, DIET.VRSEXOFEMI)) AS VRPERCENTIL,
                   PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL

              FROM PERCENTIL PER, REFEBIBL REF, TABEVRDIET DIET
             WHERE (DIET.CDREFEBIBL   = C_AVALIA.CDTABELACO)
               AND (DIET.CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL)
               AND (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')) BETWEEN DIET.VRIDADINIDI AND DIET.VRIDADFINDI)
               AND (DECODE(V_IDSEXOPACI, 0, DIET.VRSEXOMASC, 1, DIET.VRSEXOFEMI) <= V_RESULT)
               AND (PER.CDPERCENTIL = DIET.CDPERCENTIL)
               AND (REF.CDREFEBIBL  = DIET.CDREFEBIBL)
            GROUP BY PER.NMPERCENTIL, DIET.CDPERCENTIL, REF.NMREFEBIBL, REF.CDREFEBIBL
            ORDER BY 1 DESC)
            WHERE ROWNUM = 1;
            EXCEPTION
            WHEN NO_DATA_FOUND THEN
            V_VRPERCENTILMAIOR := 0;
            V_NMPERCENTILMAIOR := NULL;
            V_CDPERCENTILMAIOR := NULL;
            V_NMRFEMAIOR := NULL;
            V_CDREFEMAIOR := NULL;
            END;
            /* with cdsPercentilMaior do begin
                Data := olePercentil[1];
              end; */
            IF (V_CDPERCENTILMENOR IS NOT NULL) THEN
               IF (V_NMPERCENTILMAIOR IS NULL) OR (V_NMPERCENTILMAIOR = V_NMPERCENTILMENOR) THEN
                  V_NMTABELA := V_NMPERCENTILMENOR;
               ELSE
                  V_NMTABELA := V_NMPERCENTILMAIOR;
               END IF;
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_CDTABELA := V_CDPERCENTILMAIOR;
               ELSE
                  V_CDTABELA := V_CDPERCENTILMENOR;
               END IF;
               V_NMREFE := V_NMREFEMENOR;
               IF (V_CDPERCENTILMAIOR IS NULL) THEN
                  V_NMTABELA := '< ' + V_NMPERCENTILMENOR;
                  V_CDTABELA := '001';
               END IF;
            ELSE
               IF (V_CDPERCENTILMAIOR IS NOT NULL) THEN
                  V_NMTABELA := V_NMPERCENTILMAIOR;
                  V_CDTABELA := V_CDPERCENTILMAIOR;
                  V_NMREFE   := V_NMRFEMAIOR;
               END IF;
            END IF;
            IF (V_CDTABELA IS NULL) THEN
               V_NCLASSIF := TRADUCAO(P_IDIOMA,'Sem Classificacao na referencia informada.','','');
            ELSE
               IF V_CDTABELA < '005' THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Grave','','');
               ELSE
                  IF (V_CDTABELA >= '005') AND (V_CDTABELA <= '015') THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Desnutricao Leve/Moderada','','');
                  ELSE
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Normal','','');
                  END IF;
               END IF;
            END IF;
            IF (V_CDTABELA IS NULL) THEN
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), DECODE(P_IDIOMA,'P','AMBC Resultado',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','AMBC Resultado','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '02', V_NMTABELA, DECODE(P_IDIOMA,'P','AMBC Percentil','')||' - '||V_NMREFE);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','AMBC Percentil','')||' - '||V_NMREFE
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '02';
                  END;
               END;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '03', V_CLASSIF, DECODE(P_IDIOMA,'P','AMBC Percentil Classificacao','')||' - '||V_NMREFE);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','AMBC Percentil Classificacao','')||' - '||V_NMREFE
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '03';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '', V_NCLASSIF);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_NCLASSIF
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '61' THEN     /*Calcula_TMB_HB1919*/
         V_PESO:=0;
         V_ALTURA:=0;
         V_RESULT:=0;
         V_CLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         IF (V_PESO > 0) AND (V_ALTURA > 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               V_RESULT := 66.47 + (13.75 * V_PESO) + (5 * (V_ALTURA * 100)) - (6.76 * TO_NUMBER(P_IDADEANO));
            ELSE
               V_RESULT := 655.1 + (9.56 * V_PESO) + (1.85 * (V_ALTURA * 100)) - (4.68 * TO_NUMBER(P_IDADEANO));
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '62' THEN         /*Calcula_TMB_FAO*/
         V_PESO:=0;
         V_ID:=0;
         V_RESULT:=0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         IF (V_PESO > 0) THEN
            V_ID := (TO_NUMBER(P_IDADEANO||','||LPAD(P_IDADEMES, 2, '0')));
            IF (V_ID >= 0) AND (V_ID <= 3) THEN
               IF V_IDSEXOPACI = 0 THEN
                  V_RESULT := 60.9 * V_PESO - 54;
               ELSE
                  V_RESULT := 61 * V_PESO - 51;
               END IF;
            END IF;
            IF (V_ID > 3) AND (V_ID <= 10) THEN
               IF V_IDSEXOPACI = 0 THEN
                  V_RESULT := 22.7 * V_PESO + 495;
               ELSE
                  V_RESULT := 22.5 * V_PESO + 499;
               END IF;
            END IF;
            IF (V_ID > 10) AND (V_ID <= 18) THEN
               IF V_IDSEXOPACI = 0 THEN
                  V_RESULT := 17.5 * V_PESO + 651;
               ELSE
                  V_RESULT := 12.2 * V_PESO + 746;
               END IF;
            END IF;
            IF (V_ID > 18) AND (V_ID <= 30) THEN
               IF V_IDSEXOPACI = 0 THEN
                  V_RESULT := 15.3 * V_PESO + 679;
               ELSE
                  V_RESULT := 14.7 * V_PESO + 496;
               END IF;
            END IF;
            IF (V_ID > 30) AND (V_ID <= 60) THEN
               IF V_IDSEXOPACI = 0 THEN
                  V_RESULT := 11.6 * V_PESO + 879;
               ELSE
                  V_RESULT := 8.7 * V_PESO + 829;
               END IF;
            END IF;
            IF (V_ID > 60) THEN
               IF V_IDSEXOPACI = 0 THEN
                  V_RESULT := 13.5 * V_PESO + 487;
               ELSE
                  V_RESULT := 10.5 * V_PESO + 596;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), '');
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = ''
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '63' THEN           /*Calcula_PesoObeso*/
         V_PESOATUAL:=0;
         V_PESOIDEAL:=0;
         V_RESULT:=0;
         V_CLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOIDEAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '17';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOIDEAL := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOATUAL
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '39';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOATUAL := 0;
         END;
         IF (V_PESOIDEAL > 0) AND (V_PESOATUAL > 0) THEN
            IF V_IDSEXOPACI = 0 THEN
               V_RESULT := (V_PESOATUAL - V_PESOIDEAL) * 0.32 + V_PESOIDEAL;
            ELSE
               V_RESULT := (V_PESOATUAL - V_PESOIDEAL) * 0.38 + V_PESOIDEAL;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||' Kg', '');
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = ''
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '64' THEN             /*Calcula_EER*/
         V_PESO:=0;
         V_ALTURA:=0;
         V_CAF:=0;
         V_RESULT:=0;
         V_IDADE:=0;
         V_NAF:=NULL;
         V_CLASSIF:='';
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         BEGIN
            SELECT TO_CHAR(MAX(DSINFOAVAL))
              INTO V_NAF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '51';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_NAF := NULL;
         END;
         IF (V_PESO > 0) AND (V_ALTURA > 0) AND (V_NAF IS NOT NULL) THEN
            IF SUBSTR(V_NAF,1,1) = '1' THEN
               V_CAF := 1.48;
            END IF;
            IF SUBSTR(V_NAF,1,1) = '2' THEN
               V_CAF := 1.25;
            END IF;
            IF SUBSTR(V_NAF,1,1) = '3' THEN
               V_CAF := 1.11;
            END IF;
            IF SUBSTR(V_NAF,1,1) = '4' THEN
               V_CAF := 1;
            END IF;
            V_IDADE := TO_NUMBER(P_IDADEANO);
            IF V_IDSEXOPACI = 0 THEN
               V_RESULT := 662 - 9.53 * V_IDADE + V_CAF * (15.91 * V_PESO + 539.6 * V_ALTURA);
            ELSE
               V_RESULT := 354 - 6.91 * V_IDADE + V_CAF * (9.36 * V_PESO + 726 * V_ALTURA);
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||DECODE(P_IDIOMA,'P',' Kcal/dia',''), V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '65' THEN         /*Calcula_EERGest*/
         V_PESO:=0;
         V_ALTURA:=0;
         V_CAF:=0;
         V_RESULT:=0;
         V_TRIM:=0;
         V_IDADE:=0;
         V_NAF:=NULL;
         V_TRIM:=0;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_TRIM
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '26';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_TRIM := 0;
         END;
         BEGIN
            SELECT TO_CHAR(MAX(DSINFOAVAL))
              INTO V_NAF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '51';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_NAF := NULL;
         END;
         IF (V_PESO > 0) AND (V_ALTURA > 0) AND (V_TRIM > 0) AND (V_NAF IS NOT NULL) THEN
            IF SUBSTR(V_NAF,1,1)= '1' THEN
               V_CAF := 1.48;
            END IF;
            IF SUBSTR(V_NAF,1,1)= '2' THEN
               V_CAF := 1.25;
            END IF;
            IF SUBSTR(V_NAF,1,1)= '3' THEN
               V_CAF := 1.11;
            END IF;
            IF SUBSTR(V_NAF,1,1)= '4' THEN
               V_CAF := 1;
            END IF;
            IF SUBSTR(V_TRIM,1,1) = '1' THEN
               V_TRIM := 0;
            ELSE
               IF SUBSTR(V_TRIM,1,1) = '2' THEN
                  V_TRIM := 340;
               ELSE
                  IF SUBSTR(V_TRIM,1,1) = '3' THEN
                     V_TRIM := 454;
                  END IF;
               END IF;
            END IF;
            V_IDADE := TO_NUMBER(P_IDADEANO);
            V_RESULT := 354 - 6.91 * V_IDADE + V_CAF * (9.36 * V_PESO + 726 * V_ALTURA) + V_TRIM;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||DECODE(P_IDIOMA,'P',' Kcal/dia',''), '');
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = ''
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '66' THEN          /*Calcula_EERLac*/
         V_PESO:=0;
         V_ALTURA:=0;
         V_CAF:=0;
         V_RESULT:=0;
         V_TRIM:=0;
         V_IDADE:=0;
         V_NAF:=NULL;
         V_TRIM:=0;
         BEGIN
         SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESO
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESO := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURA := 0;
         END;
         BEGIN
            SELECT TO_CHAR(MAX(DSINFOAVAL))
              INTO V_NAF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '51';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_NAF := NULL;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_TRIM
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '52';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_TRIM := 0;
         END;
         IF (V_PESO > 0) AND (V_ALTURA > 0) AND (V_TRIM > 0) AND (V_NAF IS NOT NULL) THEN
            IF SUBSTR(V_NAF,1,1) = '1' THEN
               V_CAF := 1.48;
            END IF;
            IF SUBSTR(V_NAF,1,1) = '2' THEN
               V_CAF := 1.25;
            END IF;
            IF SUBSTR(V_NAF,1,1) = '3' THEN
               V_CAF := 1.11;
            END IF;
            IF SUBSTR(V_NAF,1,1) = '4' THEN
               V_CAF := 1;
            END IF;
            IF SUBSTR(V_TRIM,1,1) = '1' THEN
               V_TRIM := 330;
            ELSE
               IF SUBSTR(V_TRIM,1,1) = '2' THEN
                  V_TRIM := 400;
               END IF;
            END IF;
            V_IDADE := TO_NUMBER(P_IDADEANO);
            V_RESULT := 354 - 6.91 * V_IDADE + V_CAF * (9.36 * V_PESO + 726 * V_ALTURA) + V_TRIM;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999'))||DECODE(P_IDIOMA,'P',' Kcal/dia',''), '');
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = ''
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '67' THEN         /*Calcula_IMCIdoso*/
         V_PESOINF:=0;
         V_ALTURAINF:=0;
         V_RESULT:=0;
         V_CLASSIF:='';
         BEGIN
         SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURAINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURAINF := 0;
         END;
         IF (V_PESOINF > 0) AND (V_ALTURAINF > 0) THEN
            V_RESULT := V_PESOINF / POWER((V_ALTURAINF), 2);
            IF (TRUNC(V_RESULT, 3) <= 22) THEN
               V_CLASSIF :=  TRADUCAO(P_IDIOMA,'Baixo Peso','','');
            ELSE
               IF (TRUNC(V_RESULT, 3) > 22) AND (V_RESULT < 27) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado ou Eutrofico','','');
               ELSE
                  IF (TRUNC(V_RESULT, 3) >= 27) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                  END IF;
               END IF;
            END IF;
            BEGIN
               INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
               VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), V_CLASSIF);
            EXCEPTION
               WHEN DUP_VAL_ON_INDEX THEN BEGIN
                  UPDATE RESUAVAL
                     SET DSCONTRESU = V_CLASSIF
                  WHERE CDFILIAL = P_CDFILIAL
                    AND CDPACIENTE = P_CDPACIENTE
                    AND DTCONSPACI = P_DTCONSPACI
                    AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                    AND CDSEQUAVAL = '01';
               END;
            END;
         END IF;
      END IF;
      IF C_AVALIA.CDTBMETOAVAL = '68' THEN        /*Calcula_IMCGestante*/
         V_PESOINF:=0;
         V_ALTURAINF:=0;
         V_RESULT:=0;
         V_CLASSIF:='';
         V_SEMANA:=0;
         BEGIN
         SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_PESOINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '01';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_PESOINF := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_ALTURAINF
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '02';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_ALTURAINF := 0;
         END;
         BEGIN
            SELECT TO_NUMBER(MAX(DSINFOAVAL))
              INTO V_SEMANA
            FROM INFOAVAL
            WHERE CDFILIAL = P_CDFILIAL
              AND CDPACIENTE = P_CDPACIENTE
              AND DTCONSPACI = P_DTCONSPACI
              AND CDTIPODADO = '53';
         EXCEPTION
            WHEN NO_DATA_FOUND THEN
               V_SEMANA := 0;
         END;
         IF(V_PESO > 0) AND (V_ALTURAINF > 0) THEN
            IF(V_SEMANA >=6) AND (V_SEMANA <=42) THEN
               V_DADOSIMCGEST(6)  := ('06_19.9_20.0_24.9_25.0_30.0_30.1');
               V_DADOSIMCGEST(7)  := ('06_19.9_20.0_24.9_25.0_30.0_30.1');
               V_DADOSIMCGEST(8)  := ('08_20.1_20.2_25.0_25.1_30.1_30.2');
               V_DADOSIMCGEST(9)  := ('08_20.1_20.2_25.0_25.1_30.1_30.2');
               V_DADOSIMCGEST(10) := ('10_20.2_20.3_25.2_25.3_30.2_30.3');
               V_DADOSIMCGEST(11) := ('11_20.3_20.4_25.3_25.4_30.3_30.4');
               V_DADOSIMCGEST(12) := ('12_20.4_20.5_25.4_25.5_30.3_30.4');
               V_DADOSIMCGEST(13) := ('13_20.6_20.7_25.6_25.7_30.4_30.5');
               V_DADOSIMCGEST(14) := ('14_20.7_20.8_25.7_25.8_30.5_30.6');
               V_DADOSIMCGEST(15) := ('15_20.8_20.9_25.8_25.9_30.6_30.7');
               V_DADOSIMCGEST(16) := ('16_21.0_21.1_25.9_26.0_30.7_30.8');
               V_DADOSIMCGEST(17) := ('17_21.1_21.2_26.0_26.1_30.8_30.9');
               V_DADOSIMCGEST(18) := ('18_21.2_21.3_26.1_26.2_30.9_31.0');
               V_DADOSIMCGEST(19) := ('19_21.4_21.5_26.2_26.3_30.9_31.0');
               V_DADOSIMCGEST(20) := ('20_21.5_21.6_26.3_26.4_31.0_31.1');
               V_DADOSIMCGEST(21) := ('21_21.7_21.8_26.4_26.5_31.1_31.2');
               V_DADOSIMCGEST(22) := ('22_21.8_21.9_26.6_26.7_31.2_31.3');
               V_DADOSIMCGEST(23) := ('23_22.0_22.1_26.8_26.9_31.3_31.4');
               V_DADOSIMCGEST(24) := ('24_22.2_22.3_26.9_27.0_31.5_31.6');
               V_DADOSIMCGEST(25) := ('25_22.4_22.5_27.0_27.1_31.6_31.7');
               V_DADOSIMCGEST(26) := ('26_22.6_22.7_27.2_27.3_31.7_31.8');
               V_DADOSIMCGEST(27) := ('27_22.7_22.8_27.3_27.4_31.8_31.9');
               V_DADOSIMCGEST(28) := ('28_22.9_23.0_27.5_27.6_31.9_32.0');
               V_DADOSIMCGEST(29) := ('29_23.1_23.2_27.6_27.7_32.0_32.1');
               V_DADOSIMCGEST(30) := ('30_23.3_23.4_27.8_27.9_32.1_32.2');
               V_DADOSIMCGEST(31) := ('31_23.4_23.5_27.9_28.0_32.2_32.3');
               V_DADOSIMCGEST(32) := ('32_23.6_23.7_28.0_28.1_32.3_32.4');
               V_DADOSIMCGEST(33) := ('33_23.8_23.9_28.1_28.2_32.4_32.5');
               V_DADOSIMCGEST(34) := ('34_23.9_24.0_28.3_28.4_32.5_32.6');
               V_DADOSIMCGEST(35) := ('35_24.1_24.2_28.4_28.5_32.6_32.7');
               V_DADOSIMCGEST(36) := ('36_24.2_24.3_28.5_28.6_32.7_32.8');
               V_DADOSIMCGEST(37) := ('37_24.4_24.5_28.7_28.8_32.8_32.9');
               V_DADOSIMCGEST(38) := ('38_24.5_24.6_28.8_28.9_32.9_33.0');
               V_DADOSIMCGEST(39) := ('39_24.7_24.8_28.9_29.0_33.0_33.1');
               V_DADOSIMCGEST(40) := ('40_24.9_25.0_29.1_29.2_33.1_33.2');
               V_DADOSIMCGEST(41) := ('41_25.0_25.1_29.2_29.3_33.2_33.3');
               V_DADOSIMCGEST(42) := ('42_25.0_25.1_29.2_29.3_33.2_33.3');
               V_RESULT := V_PESOINF / POWER((V_ALTURAINF), 2);
               IF (TO_CHAR(TRUNC(V_RESULT, 3)) <= SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 4, 2)||','||SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 7, 1)) THEN
                  V_CLASSIF := TRADUCAO(P_IDIOMA,'Baixo Peso','','');
               ELSE
                  IF ((TO_CHAR(TRUNC(V_RESULT, 3))) >= (SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 9, 2)||','||SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 12, 1))) AND
                     ((TO_CHAR(TRUNC(V_RESULT, 3))) <= (SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 14, 2)||','||SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 17, 1))) THEN
                     V_CLASSIF := TRADUCAO(P_IDIOMA,'Adequado','','');
                  ELSE
                     IF ((TO_CHAR(TRUNC(V_RESULT, 3))) >= (SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 19, 2)||','||SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 22, 1))) AND
                        ((TO_CHAR(TRUNC(V_RESULT, 3))) <= (SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 24, 2)||','||SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 27, 1))) THEN
                        V_CLASSIF := TRADUCAO(P_IDIOMA,'Sobrepeso','','');
                     ELSE
                        IF (TO_CHAR(TRUNC(V_RESULT, 3)) >= SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 29, 2)||','||SUBSTR(V_DADOSIMCGEST(TO_CHAR(V_SEMANA)), 32, 1)) THEN
                           V_CLASSIF := TRADUCAO(P_IDIOMA,'Obesidade','','');
                        END IF;
                     END IF;
                  END IF;
               END IF;
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', LTRIM(TO_CHAR(V_RESULT,'99999.999')), V_CLASSIF);
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = V_CLASSIF
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            ELSE
               BEGIN
                  INSERT INTO RESUAVAL(CDFILIAL, CDPACIENTE, DTCONSPACI, CDTBMETOAVAL, CDSEQUAVAL, DSRESUAVAL, DSCONTRESU)
                  VALUES (P_CDFILIAL, P_CDPACIENTE, P_DTCONSPACI, C_AVALIA.CDTBMETOAVAL, '01', '', DECODE(P_IDIOMA,'P','Sem Classificacao',''));
               EXCEPTION
                  WHEN DUP_VAL_ON_INDEX THEN BEGIN
                     UPDATE RESUAVAL
                        SET DSCONTRESU = DECODE(P_IDIOMA,'P','Sem Classificacao','')
                     WHERE CDFILIAL = P_CDFILIAL
                       AND CDPACIENTE = P_CDPACIENTE
                       AND DTCONSPACI = P_DTCONSPACI
                       AND CDTBMETOAVAL = C_AVALIA.CDTBMETOAVAL
                       AND CDSEQUAVAL = '01';
                  END;
               END;
            END IF;
         END IF;
      END IF;
   END LOOP;
  COMMIT;
END;
/