package br.com.elotech.social.scripts;

public class ProntuarioSuasScript {
    private static StringBuilder sb;

    public static String getSqlPessoaReferencia(){
        sb = new StringBuilder("SELECT");
        sb.append(" usu.usu_codigo                           AS codigo,")
          .append(" usu.usu_nome                             AS nome,")
          .append(" CASE usu.usu_sexo ")
          .append("     WHEN 'M' THEN 'MASCULINO'")
          .append("     WHEN 'F' THEN 'FEMININO' END         AS sexo,")
          .append(" usu.usu_datanasc                         AS data_nascimento,")
          .append(" usu.usu_nis                              AS nis,")
          .append(" extract(year from age(usu.usu_datanasc)) AS idade, ")
          .append(" dom.dom_numero                           AS domicilio_numero,")
          .append(" dom.dom_complemento                      AS domicilio_complemento,")
          .append(" bai.bai_nome                             AS bairro_nome,")
          .append(" UPPER(rua.rua_nome)                      AS rua_nome,")
          .append(" UPPER(log.logra_logradouro)              AS tipoLog,")
          .append(" cid.cid_nome                             AS cidade_nome,")
          .append(" cid.uf_sigla                             AS estado_sigla")
          .append(" FROM usuario usu")
          .append(" INNER JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo = aspsu.usu_codigo")
          .append(" INNER JOIN as_prontuario_suas asps ON aspsu.asps_codigo = asps.asps_codigo")
          .append(" LEFT JOIN domicilio dom ON dom.dom_codigo = usu.dom_codigo")
          .append(" LEFT JOIN rua as rua ON dom.rua_codigo = rua.rua_codigo")
          .append(" LEFT JOIN logradouro as log ON rua.co_tipo_logradouro = log.logra_cod")
          .append(" LEFT JOIN bairro bai ON rua.bai_codigo = bai.bai_codigo")
          .append(" LEFT JOIN cidade cid ON bai.cid_codigo = cid.cid_codigo")
          .append(" WHERE 1=1")
          .append(" AND usu.usu_asps_ativo ='t'")
          .append(" AND usu.usu_asps_ref ='t'")
          .append(" AND asps.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlFormaIngresso(){
        sb = new StringBuilder("SELECT DISTINCT");
        sb.append(" aspt.aspt_forma_acesso          AS formaAcesso,")
          .append(" aspt.aspt_razoes_necessidades   AS razoesNecessidades,")
          .append(" aspt.aspt_bolsa_familia         AS bolsaFamilia,")
          .append(" aspt.aspt_bpc                   AS bpc,")
          .append(" aspt.aspt_peti                  AS peti,")
          .append(" aspt.aspt_paefi                 AS paefi,")
          .append(" aspt.aspt_paif                  AS paif,")
          .append(" aspt.aspt_scfv                  AS scfv,")
          .append(" aspt.aspt_outros                AS prog_outros,")
          .append(" aspt.aspt_prog_prioritarios     AS prog_prioritario")
          .append(" FROM asps_primeiro_atendimento aspt")
          .append(" INNER JOIN as_prontuario_suas asps ON aspt.asps_codigo = asps.asps_codigo")
          .append(" INNER JOIN as_prontuario_suas_usuario aspsu ON aspsu.asps_codigo = asps.asps_codigo")
          .append(" WHERE asps.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlAtendimentoBasico(){
      sb = new StringBuilder();
      sb.append("SELECT")
        .append(" asab.asab_data           AS data,")
        .append(" asab.asab_descricao      AS descricao,")
        .append(" asab.asab_parecer        AS parecer,")
        .append(" asab.asab_parecer_social AS parecer_social,")
        .append(" uni.uni_desc             AS unidade,")
        .append(" usr.usr_nome             AS profissional,")
        .append(" usu.usu_nome             AS cidadao,")
        .append(" asat.asat_nome           AS tipo")
        .append(" FROM as_atendimento_basicocras AS asab")
        .append(" INNER JOIN unidade AS uni ON asab.uni_codigo = uni.uni_codigo")
        .append(" INNER JOIN usuarios AS usr ON asab.usr_codigo = usr.usr_codigo")
        .append(" INNER JOIN usuario AS usu ON asab.usu_codigo = usu.usu_codigo")
        .append(" INNER JOIN as_prontuario_suas_usuario AS aspsu ON aspsu.usu_codigo = usu.usu_codigo")
        .append(" INNER JOIN as_atendimento_tipo AS asat ON asab.asat_codigo = asat.asat_codigo")
        .append(" LEFT JOIN as_atendimento_basicocras_motivo abm on asab.asab_codigo = abm.asab_codigo")
        .append(" WHERE aspsu.asps_codigo = :aspsCodigo")
        .append(" ORDER BY asab.asab_data DESC");

      return sb.toString();
    }

    public static String getSqlBeneficio(){
      sb = new StringBuilder();
      sb.append(" SELECT DISTINCT")
        .append("   asbd.asbd_codigo      AS codigo,")
        .append("   uni.uni_desc          AS unidade,")
        .append("   usu.usu_nome          AS cidadao,")
        .append("   usr.usr_nome          AS profissional,")
        .append("   ase.ase_nome          AS estabelecimento,")
        .append("   asbd.asbd_obs         AS observacao,")
        .append("   asbd.asbd_dtcadastro  AS dataConcessao,")
        .append("   asbd.asbd_dtentrega   AS dataEntrega")
        .append(" FROM as_beneficios_dados AS asbd")
        .append("   INNER JOIN unidade AS uni ON asbd.uni_codigo = uni.uni_codigo")
        .append("   INNER JOIN usuario AS usu ON asbd.usu_codigo = usu.usu_codigo")
        .append("   INNER JOIN as_prontuario_suas_usuario AS aspsu ON aspsu.usu_codigo = usu.usu_codigo")
        .append("   INNER JOIN usuarios AS usr ON asbd.usr_codigo = usr.usr_codigo")
        .append("   INNER JOIN as_estabelecimentos AS ase ON asbd.ase_codigo = ase.ase_codigo")
        .append(" WHERE aspsu.asps_codigo = :aspsCodigo");

      return sb.toString();
    }

    public static String getSqlBeneficioItem(){
      sb = new StringBuilder();
      sb.append(" SELECT DISTINCT")
        .append("   ben.beneficio         AS beneficio,")
        .append("   asbt.asbt_nome        AS tipo,")
        .append("   asbdi.asbdi_qtd       AS quantidade,")
        .append("   asbdi.asbdi_valor     AS valor,")
        .append("   asbdi.asbdi_concedido AS concedido")
        .append(" FROM as_beneficios_dados_itens AS asbdi")
        .append("   INNER JOIN as_beneficios_dados AS asbd ON asbdi.asbd_codigo = asbd.asbd_codigo")
        .append("   INNER JOIN beneficios AS ben ON asbdi.cod_ben = ben.cod_ben")
        .append("   INNER JOIN as_beneficios_tipo AS asbt ON asbdi.asbt_codigo = asbt.asbt_codigo")
        .append("   INNER JOIN as_estabelecimentos AS ase ON asbd.ase_codigo = ase.ase_codigo")
        .append(" WHERE asbdi.asbd_codigo = :asbdCodigo");
      return sb.toString();
    }

    public static String getSqlEncaminhamento(){
      sb = new StringBuilder();
      sb.append(" SELECT")
        .append("   asenc.asenc_data  AS data,")
        .append("   uni.uni_desc      AS unidade,")
        .append("   ase.ase_nome      AS local,")
        .append("   usu.usu_nome      AS cidadao,")
        .append("   usr.usr_nome      AS profissional")
        .append(" FROM as_encaminhamento AS asenc")
        .append(" INNER JOIN as_encaminhamento_codigos AS asec ON asenc.asec_codigo = asec.asec_codigo")
        .append(" INNER JOIN unidade AS uni ON asenc.uni_codigo = uni.uni_codigo")
        .append(" INNER JOIN as_estabelecimentos AS ase ON asenc.ase_codigo = ase.ase_codigo")
        .append(" INNER JOIN usuario AS usu ON asenc.usu_codigo = usu.usu_codigo")
        .append(" INNER JOIN as_prontuario_suas_usuario AS aspsu ON aspsu.usu_codigo = usu.usu_codigo")
        .append(" INNER JOIN usuarios AS usr ON asenc.usr_codigo = usr.usr_codigo")
        .append(" WHERE aspsu.asps_codigo = :aspsCodigo");
      return sb.toString();
    }

    public static String getSqlGrupos(){
      sb = new StringBuilder();
      sb.append(" SELECT")
        .append("  asapar.asapar_dtingresso  AS data,")
        .append("  asag.asag_titulo          AS grupo,")
        .append("  asag.asag_status          AS ativo,")
        .append("  uni.uni_desc              AS unidade,")
        .append("  usu.usu_nome              AS cidadao")
        .append("  FROM as_atendimentocol_participantes AS asapar")
        .append("  INNER JOIN as_atendimentocol_grupo AS asag ON asag.asag_codigo = asapar.asag_codigo")
        .append("  INNER JOIN unidade AS uni ON asag.uni_codigo = uni.uni_codigo")
        .append("  INNER JOIN usuario AS usu ON asapar.usu_codigo = usu.usu_codigo")
        .append("  INNER JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo = aspsu.usu_codigo")
        .append("  WHERE aspsu.asps_codigo = :aspsCodigo")
        .append("  ORDER BY asag.asag_titulo DESC");
      return sb.toString();
    }

    public static String getSqlComposicaoFamiliar(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsu.aspsu_num_ordem                    AS ordem,")
          .append(" UPPER(p.descricao)                       AS parentesco, ")
          .append(" usu.usu_nome                             AS nome, ")
          .append(" CASE usu.usu_sexo ")
          .append("     WHEN 'M' THEN 'MASCULINO'")
          .append("     WHEN 'F' THEN 'FEMININO' END         AS sexo,")
          .append(" usu.usu_datanasc                         AS data_nascimento, ")
          .append(" usu.usu_asdeficiencia                    AS deficiencia, ")
          .append(" extract(year from age(usu.usu_datanasc)) AS idade, ")
          .append(" usu.as_usu_alfabetizado                  AS alfabetizado, ")
          .append(" usu.as_usu_estuda                        AS estuda, ")
          .append(" CASE usu.as_usu_escolaridade ")
          .append("     WHEN 101 ")
          .append("         THEN 'Nunca frequentou escola' ")
          .append("     WHEN 1 ")
          .append("         THEN 'Creche' ")
          .append("     WHEN 2 ")
          .append("         THEN 'Educação Infantil' ")
          .append("     WHEN 11 ")
          .append("         THEN '1º ano E. Fundamental' ")
          .append("     WHEN 12 ")
          .append("         THEN '2º ano E. Fundamental' ")
          .append("     WHEN 13 ")
          .append("         THEN '3º ano E. Fundamental' ")
          .append("     WHEN 14 ")
          .append("         THEN '4º ano E. Fundamental' ")
          .append("     WHEN 15 ")
          .append("         THEN '5º ano E. Fundamental' ")
          .append("     WHEN 16 ")
          .append("         THEN '6º ano E. Fundamental' ")
          .append("     WHEN 17 ")
          .append("         THEN '7º ano E. Fundamental' ")
          .append("     WHEN 18 ")
          .append("         THEN '8º ano E. Fundamental' ")
          .append("     WHEN 19 ")
          .append("         THEN '9º ano E. Fundamental' ")
          .append("     WHEN 21 ")
          .append("         THEN '1º ano E. Médio' ")
          .append("     WHEN 22 ")
          .append("         THEN '2º ano E. Médio' ")
          .append("     WHEN 23 ")
          .append("         THEN '3º ano E. Médio' ")
          .append("     WHEN 30 ")
          .append("         THEN 'Superior Incompleto' ")
          .append("     WHEN 31 ")
          .append("         THEN 'Superior Completo' ")
          .append("     WHEN 40 ")
          .append("         THEN 'EJA – Ensino Fundamental' ")
          .append("     WHEN 41 ")
          .append("         THEN 'EJA – Ensino Médio' ")
          .append("     WHEN 99 ")
          .append("         THEN 'Outros' ")
          .append("     ELSE 'Não Informado' ")
          .append(" END                                      AS escolaridade, ")
          .append(" usu.usu_asdoc_ctpsprov                   AS possui_ctps, ")
          .append(" CASE usu.as_cond_ocupacao ")
          .append("     WHEN 101 ")
          .append("         THEN 'Não Trabalha' ")
          .append("     WHEN 1 ")
          .append("         THEN 'Trabalhador por conta própria (bico, autônomo)' ")
          .append("     WHEN 2 ")
          .append("         THEN 'Trabalhador temporário em área rural' ")
          .append("     WHEN 3 ")
          .append("         THEN 'Empregado sem carteira de trabalho assinada' ")
          .append("     WHEN 4 ")
          .append("         THEN 'Empregado com carteira de trabalho assinada' ")
          .append("     WHEN 5 ")
          .append("         THEN 'Trabalhador doméstico sem carteira de trabalho assinada' ")
          .append("     WHEN 6 ")
          .append("         THEN 'Trabalhador doméstico com carteira de trabalho assinada' ")
          .append("     WHEN 7 ")
          .append("         THEN 'Trabalhador não-remunerado' ")
          .append("     WHEN 8 ")
          .append("         THEN 'Militar ou servidor público' ")
          .append("     WHEN 9 ")
          .append("         THEN 'Empregador' ")
          .append("     WHEN 10 ")
          .append("         THEN 'Estagiário' ")
          .append("     WHEN 11 ")
          .append("         THEN 'Aprendiz (em condição legal)' ")
          .append("     WHEN 12 ")
          .append("         THEN 'Aposentado' ")
          .append("     WHEN 13 ")
          .append("         THEN 'Pensionista' ")
          .append("     ELSE 'Não Informado' ")
          .append(" END                                      AS condicao_ocupacao, ")
          .append(" usu.as_possui_qualificacao               AS possui_qualificacao, ")
          .append(" usu.as_possui_qualificacao_qual          AS qualificacao, ")
          .append(" usu.as_renda_mensal                      AS renda_mensal, ")
          .append(" CASE usu.usu_as_tipo_deficiencia ")
          .append("     WHEN 1 ")
          .append("         THEN 'Cegueira' ")
          .append("     WHEN 2 ")
          .append("         THEN 'Baixa Visão' ")
          .append("     WHEN 3 ")
          .append("         THEN 'Surdez severa/profunda' ")
          .append("     WHEN 4 ")
          .append("         THEN 'Surdez leve/moderada' ")
          .append("     WHEN 5 ")
          .append("         THEN 'Deficiência física' ")
          .append("     WHEN 6 ")
          .append("         THEN 'Deficiência mental ou intelectual' ")
          .append("     WHEN 7 ")
          .append("         THEN 'Sindrome de Down' ")
          .append("     WHEN 8 ")
          .append("         THEN 'Transtorno/doença mental' ")
          .append("     ELSE 'Não Informado' ")
          .append(" END AS tipo_deficiencia, ")
          .append(" usu.usu_as_cuidado_constante AS cuidado_constante, ")
          .append(" COALESCE(usu.usu_as_resp_cuidado,NULL,'Não informado')      AS resp_cuidado ")
          .append(" FROM as_prontuario_suas asps ")
          .append(" INNER JOIN as_prontuario_suas_usuario aspsu ON asps.asps_codigo = aspsu.asps_codigo ")
          .append(" INNER JOIN usuario usu ON aspsu.usu_codigo = usu.usu_codigo ")
          .append(" INNER JOIN as_parentesco p on p.id = aspsu.aspsu_parentesco ")
          .append(" WHERE aspsu.aspsu_ativo IS TRUE ")
          .append(" AND asps.asps_codigo = :aspsCodigo ")
          .append(" ORDER BY aspsu.aspsu_num_ordem ASC; ");
        return sb.toString();
    }

    public static String getSqlPerfilEtario(){
        sb = new StringBuilder("SELECT");
        sb.append(" CASE WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 0  AND 6)   THEN '0 À 6 ANOS'")
                .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 7  AND 14)   THEN '7 À 14 ANOS'")
                .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 15  AND 17)   THEN '15 À 17 ANOS'")
                .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 18  AND 29)   THEN '18 À 29 ANOS'")
                .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 30  AND 59)   THEN '30 À 59 ANOS'")
                .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 60  AND 64)   THEN '60 À 64 ANOS'")
                .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 65  AND 69)   THEN '65 À 69 ANOS'")
                .append("      WHEN (extract(year from age(usu.usu_datanasc)) >= 70) THEN '70 ANOS OU MAIS' END as faixa_etaria,")
                .append(" count(usu.usu_datanasc) as qtdeFamiliares")
                .append(" FROM as_prontuario_suas_usuario aspsu ")
                .append(" JOIN usuario usu ON aspsu.usu_codigo=usu.usu_codigo ")
                .append(" WHERE aspsu.asps_codigo =:aspsCodigo ")
                .append(" GROUP BY faixa_etaria ")
                .append(" ORDER BY faixa_etaria ");

        return sb.toString();
    }

    public static String getSqlEspecificidadesFamilia(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspses.*")
          .append(" FROM asps_espec_sociais_cf aspses")
          .append(" WHERE aspses.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlComposicaoFamiliarObservacao(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspso.aspso_obs     AS observacao,")
          .append(" aspso.aspso_data    AS data,")
          .append(" usr.usr_nome        AS responsavel")
          .append(" FROM asps_obs_cf aspso")
          .append(" JOIN usuarios usr ON aspso.usr_codigo=usr.usr_codigo")
          .append(" WHERE ")
          .append(" aspso.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlCondicoesHabitacionais(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsch.*")
          .append(" FROM asps_condicoes_habitacionais aspsch")
          .append(" WHERE aspsch.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlCondicoesHabitacionaisObservacao(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspscho.aspscho_obs     AS observacao,")
          .append(" usr.usr_nome            AS responsavel,")
          .append(" aspscho.aspscho_data    AS data")
          .append(" FROM asps_obs_ch aspscho")
          .append(" INNER JOIN usuarios usr ON aspscho.usr_codigo = usr.usr_codigo")
          .append(" WHERE aspscho.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlVulnerabilidadeEducacionalNaoFreqEsc(){
        sb = new StringBuilder("SELECT");
        sb.append(" CASE WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 0  AND 5)   THEN '0 À 5 ANOS'")
          .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 6  AND 14)   THEN '6 À 14 ANOS'")
          .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 15  AND 17)   THEN '15 À 17 ANOS'")
          .append("      END as faixa_etaria,")
          .append(" count(usu.usu_datanasc) as qtdeNFreqEsc")
          .append(" FROM as_prontuario_suas_usuario aspsu")
          .append(" JOIN usuario usu ON aspsu.usu_codigo=usu.usu_codigo")
          .append(" WHERE aspsu.aspsu_ativo IS TRUE")
          .append(" AND as_usu_estuda IS FALSE")
          .append(" AND extract(year from age(usu.usu_datanasc)) BETWEEN 0  AND 17")
          .append(" AND aspsu.asps_codigo = :aspsCodigo")
          .append(" GROUP BY faixa_etaria")
          .append(" ORDER BY faixa_etaria ASC");
        return sb.toString();
    }

    public static String getSqlVulnerabilidadeEducacionalAnalfabeto(){
        sb = new StringBuilder("SELECT");
        sb.append(" CASE WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 10  AND 17)   THEN '0 À 5 ANOS'")
          .append("      WHEN (extract(year from age(usu.usu_datanasc)) BETWEEN 18  AND 59)   THEN '6 À 14 ANOS'")
          .append("      WHEN (extract(year from age(usu.usu_datanasc)) >=60)   THEN '60 ANOS OU MAIS'")
          .append("      END as faixa_etaria,")
          .append(" count(usu.usu_datanasc) as qtdeAnalfabeto")
          .append(" FROM as_prontuario_suas_usuario aspsu")
          .append(" JOIN usuario usu ON aspsu.usu_codigo=usu.usu_codigo")
          .append(" WHERE aspsu.aspsu_ativo IS TRUE")
          .append(" AND as_usu_alfabetizado IS FALSE")
          .append(" AND extract(year from age(usu.usu_datanasc)) BETWEEN 10  AND 59")
          .append(" AND aspsu.asps_codigo = :aspsCodigo")
          .append(" GROUP BY faixa_etaria")
          .append(" ORDER BY faixa_etaria ASC");
        return sb.toString();
    }

    public static String getSqlCondicoesEducacionaisDescPrograma(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsdp.aspsdp_data_ocorrencia AS data_ocorrencia,")
          .append(" CASE aspsdp_efeito")
          .append(" WHEN 1 THEN 'ADVERTÊNCIA'")
          .append(" WHEN 2 THEN 'BLOQUEIO'")
          .append(" WHEN 3 THEN 'SUSPENSÃO'")
          .append(" WHEN 4 THEN 'CANCELAMENTO'")
          .append(" END 					      AS efeito,")
          .append(" aspsdp.aspsdp_suspenso        AS suspenso,")
          .append(" aspsdp.aspsdp_data            AS data_cadastro,")
          .append(" usu.usu_nome  			      AS nome")
          .append(" FROM asps_desc_programa_ce aspsdp")
          .append(" JOIN usuario usu ON usu.usu_codigo=aspsdp.usu_codigo")
          .append(" JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo=aspsu.usu_codigo")
          .append(" JOIN as_prontuario_suas asps ON aspsu.asps_codigo=asps.asps_codigo")
          .append(" WHERE aspsdp.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlObsCondicoesEducacionais(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsceo.aspsceo_obs     AS observacao,")
          .append(" aspsceo.aspsceo_data    AS data,")
          .append(" usr.usr_nome            AS responsavel")
          .append(" FROM asps_obs_ce aspsceo")
          .append(" JOIN as_prontuario_suas asps ON aspsceo.asps_codigo=asps.asps_codigo")
          .append(" JOIN usuarios usr ON aspsceo.usr_codigo=usr.usr_codigo")
          .append(" WHERE aspsceo.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlAnotProgramasFamilia(){
        sb = new StringBuilder("SELECT");
        sb.append(" ps.ps_nome                   AS programa_nome,")
          .append(" aspsapf.aspsapf_vlr_recebido AS valor_recebido,")
          .append(" aspsapf.aspsapf_dtinicio     AS data_inicio,")
          .append(" aspsapf.aspsapf_dtfinal      AS data_final")
          .append(" FROM asps_anot_programasfam_ct aspsapf")
          .append(" JOIN as_programas_sociais ps ON aspsapf.ps_codigo=ps.ps_codigo")
          .append(" WHERE aspsapf.asps_codigo = :aspsCodigo")
          .append(" ORDER BY aspsapf.aspsapf_codigo DESC");
        return sb.toString();
    }

    public static String getSqlInfRendaFamiliar(){
        sb = new StringBuilder("SELECT");
        sb.append(" COALESCE(SUM(aspsapf_vlr_recebido),NULL,0) AS renda_progs")
          .append(" FROM asps_anot_programasfam_ct aspsapf")
          .append(" WHERE aspsapf.aspsapf_dtfinal IS NULL")
          .append("     AND aspsapf.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getsqlRendaFamiliar(){
        sb = new StringBuilder("SELECT");
        sb.append(" COUNT(usu.usu_codigo)                       AS qtd_membros,")
          .append(" SUM(as_renda_mensal)                        AS renda_familia,")
          .append(" SUM(as_renda_mensal)/COUNT(usu.usu_codigo)  AS renda_percapita")
          .append(" FROM usuario usu")
          .append(" JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo=aspsu.usu_codigo")
          .append(" JOIN as_prontuario_suas asps ON aspsu.asps_codigo=asps.asps_codigo")
          .append(" WHERE aspsu.aspsu_ativo IS TRUE")
          .append(" AND asps.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlAnotProgramasCidadao(){
        sb = new StringBuilder("SELECT");
        sb.append(" ps.ps_nome                    AS programa_nome,")
          .append(" usu.usu_nome               AS nome,")
          .append(" aspsap.aspsap_vlr_recebido AS valor_recebido,")
          .append(" aspsap.aspsap_dtinicio     AS data_inicio,")
          .append(" aspsap.aspsap_dtfinal      AS data_final")
          .append(" FROM asps_anot_programas_ct aspsap")
          .append(" JOIN as_prontuario_suas_usuario aspsu ON aspsap.usu_codigo=aspsu.usu_codigo")
          .append(" JOIN as_programas_sociais ps ON aspsap.ps_codigo=ps.ps_codigo")
          .append(" JOIN usuario usu ON aspsu.usu_codigo=usu.usu_codigo")
          .append(" WHERE aspsap.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlObsCondTrabalho(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspscto.aspscto_obs     AS observacao,")
          .append(" aspscto.aspscto_data    AS data,")
          .append(" usr.usr_nome            AS responsavel")
          .append(" FROM asps_obs_ct aspscto")
          .append(" JOIN as_prontuario_suas asps ON aspscto.asps_codigo=asps.asps_codigo")
          .append(" JOIN usuarios usr ON aspscto.usr_codigo=usr.usr_codigo")
          .append(" WHERE aspscto.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlAnotSaudeFamilia(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsas.aspsas_cuidado_constante                                      AS cuidado_constante,")
          .append(" COALESCE(aspsas.aspsas_resp_cuidado_constante,NULL,'Não informado') AS responsavel_cuidado,")
          .append(" aspsas.aspsas_inseguranca_alimentar                                  AS inseguranca_alimentar,")
          .append(" aspsas.aspsas_inseguranca_alimentar_data                             AS inseguranca_alimentar_data,")
          .append(" aspsas.aspsas_doenca_grave                                           AS doenca_grave,")
          .append(" aspsas.aspsas_tipo_doenca_grave                                      AS tipo_doenca_grave,")
          .append(" aspsas.aspsas_remedio_controlado                                     AS remedio_controlado,")
          .append(" aspsas.aspsas_alcoolatra                                             AS alcoolatra,")
          .append(" aspsas.aspsas_alcoolatra_data                                        AS alcoolatra_data,")
          .append(" aspsas.aspsas_drogado                                                AS drogado,")
          .append(" aspsas.aspsas_tipo_droga                                             AS tipo_droga,")
          .append(" aspsas.aspsas_drogado_data                                           AS drogado_data,")
          .append(" aspsas.aspsas_data                                                   AS data")
          .append(" FROM asps_anot_saude_cs aspsas")
          .append(" WHERE aspsas.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlGestante(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsu.aspsu_num_ordem   AS ordem,")
          .append(" usu.usu_nome            AS nome,")
          .append(" aspsrg.aspsrg_meses     AS meses_gestacao,")
          .append(" aspsrg.aspsrg_prenatal  AS pre_natal,")
          .append(" aspsrg.aspsrg_data      AS data")
          .append(" FROM asps_reg_gestante_cs aspsrg")
          .append(" JOIN usuario usu ON aspsrg.usu_codigo=usu.usu_codigo")
          .append(" JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo=aspsu.usu_codigo")
          .append(" WHERE aspsrg.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlObsSaudeFam(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspscso.aspscso_obs     AS observacao,")
          .append(" aspscso.aspscso_data    AS data,")
          .append(" usr.usr_nome            AS responsavel")
          .append(" FROM asps_obs_cs aspscso")
          .append(" JOIN usuarios usr ON ")
          .append(" aspscso.usr_codigo=usr.usr_codigo")
          .append(" WHERE aspscso.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlConvivencia(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspscf.*")
          .append(" FROM asps_convivencia_familiar aspscf")
          .append(" WHERE aspscf.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlConvivenciaObs(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspscco.aspscco_obs     AS observacao,")
          .append(" aspscco.aspscco_data    AS data,")
          .append(" usr.usr_nome            AS responsavel")
          .append(" FROM asps_obs_cc aspscco")
          .append(" JOIN usuarios usr ON aspscco.usr_codigo=usr.usr_codigo")
          .append(" WHERE aspscco.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlRegistrosViolacao(){
        sb = new StringBuilder("SELECT");
        sb.append(" DISTINCT")
          .append(" asrv.asrv_persiste      AS persiste,")
          .append(" asrv.asrv_dtinicio      AS data_inicio,")
          .append(" asrv.asrv_dtfinal       AS data_final,")
          .append(" usu.usu_nome            AS nome,")
          .append(" assv.assv_nome          AS situacao")
          .append(" FROM as_registros_violacao asrv")
          .append(" JOIN as_situacoes_violacao assv ON asrv.assv_codigo=assv.assv_codigo")
          .append(" JOIN usuario usu ON asrv.usu_codigo_ate=usu.usu_codigo")
          .append(" WHERE asrv.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlViolacaoObs(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsvo.aspsvo_obs    AS observacao,")
          .append(" aspsvo.aspsvo_data   AS data,")
          .append(" usr.usr_nome        AS responsavel")
          .append(" FROM asps_obs_sv aspsvo")
          .append(" JOIN usuarios usr ON aspsvo.usr_codigo = usr.usr_codigo")
          .append(" WHERE aspsvo.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlHistAcolhimento(){
        sb = new StringBuilder("SELECT");
        sb.append(" usu.usu_nome            AS nome,")
          .append(" aspsha.aspsha_motivo    AS motivo,")
          .append(" aspsha.aspsha_dtinicio  AS data_inicio,")
          .append(" aspsha.aspsha_dtfinal  AS data_final,")
          .append(" aspsu.aspsu_num_ordem   AS ordem")
          .append(" FROM asps_hist_acolhimento aspsha")
          .append(" JOIN usuario usu ON aspsha.usu_codigo=usu.usu_codigo")
          .append(" JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo=aspsu.usu_codigo")
          .append(" WHERE aspsha.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlHistAcolObs(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspshao.aspshao_obs    AS observacao,")
                .append(" aspshao.aspshao_data   AS data,")
                .append(" usr.usr_nome        AS responsavel")
                .append(" FROM asps_obs_ha aspshao")
                .append(" JOIN usuarios usr ON aspshao.usr_codigo = usr.usr_codigo")
                .append(" WHERE aspshao.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlMedSocEduc(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsu.aspsu_num_ordem       AS ordem,")
          .append(" usu.usu_nome                AS nome,")
          .append(" astms.astms_nome            AS medida_socioeducativa,")
          .append(" aspsms.aspsms_num_processo  AS processo,")
          .append(" aspsms.aspsms_dtinicio      AS data_inicio,")
          .append(" aspsms.aspsms_dtfinal       AS data_final,")
          .append(" aspsms.aspsms_creas         AS atendido_creas")
          .append(" FROM asps_medidas_socioeducativas aspsms")
          .append(" JOIN usuario usu ON aspsms.usu_codigo=usu.usu_codigo")
          .append(" JOIN as_tipo_medida_socioeducativa astms ON astms.astms_codigo=aspsms.astms_codigo")
          .append(" JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo=aspsu.usu_codigo")
          .append(" WHERE aspsms.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

    public static String getSqlMedSocEducObs(){
        sb = new StringBuilder("SELECT");
        sb.append(" aspsmso.aspsmso_obs          AS observacao,")
                .append(" aspsmso.aspsmso_data   AS data,")
                .append(" usr.usr_nome           AS responsavel")
                .append(" FROM asps_obs_ms aspsmso")
                .append(" JOIN usuarios usr ON aspsmso.usr_codigo = usr.usr_codigo")
                .append(" WHERE aspsmso.asps_codigo = :aspsCodigo");
        return sb.toString();
    }

}
