package br.com.elotech.saude.scripts;

import br.com.elotech.saude.model.filters.GuiaEncaminhamentoExternoFilter;
import br.com.elotech.saude.model.filters.vacinas.AtestadoVacinaFilter;

public abstract class GuiaEncaminhamentoExternoScript {
    private static StringBuilder sb;

    public static String getSql(GuiaEncaminhamentoExternoFilter filter) {
        sb = new StringBuilder();
        sb.append(" SELECT")
          .append("  enc.enc_ext_data_cad      AS dataCadastro,")
          .append("  enc.enc_ext_agendado_para AS agendadoPara,")
          .append("  enc.enc_ext_contato       AS contato,")
          .append("  enc.enc_ext_data          AS dataAgendamento,")
          .append("  enc.enc_ext_hora          AS horaAgendamento,")
          .append("  enc.enc_ext_internacao    AS internacao,")
          .append("  enc.enc_ext_urgencia      AS urgencia,")
          .append("  enc.enc_ext_descricao     AS descricao,")
          .append("  uni.uni_desc              AS unidade,")
          .append("  uni.uni_cnes              AS cnes,")
          .append("  usr.usr_nome              AS profissional,")
          .append("  con.con_descricao         AS conselho,")
          .append("  usr.cnes_sigla_est        AS estado,")
          .append("  usr.usr_num_conselho      AS numeroConselho,")
          .append("  usu.usu_nome              AS nome,")
          .append("  usu.usu_cartao_sus        AS cns,")
          .append("  usu.usu_datanasc          AS dataNascimento,")
          .append("  extract(YEAR from age(usu.usu_datanasc))  AS idade, ")
          .append("  usu.usu_prontuario        AS prontuario,")
          .append("  usu.usu_sexo              AS sexo,")
          .append("  usu.usu_mae               AS mae,")
          .append("  usu.usu_celular           AS celular,")
          .append("  cid.cid_nome              AS cidade,")
          .append("  cid.uf_sigla              AS estadoNascimento,")
          .append("  esp.esp_nome              AS especialidade,")
          .append("  usu.usu_rg                AS rg,")
          .append("  usu.usu_rg_dt_emissao     AS dataEmissao,")
          .append("  usu.usu_cpf               AS cpf")
          .append(" FROM encaminhamento_externo enc")
          .append(" JOIN atendimento ate ON enc.ate_codigo=ate.ate_codigo")
          .append(" JOIN unidade uni ON ate.uni_codigo=uni.uni_codigo")
          .append(" JOIN usuarios usr ON ate.med_codigo=usr.usr_codigo")
          .append(" JOIN usuario usu ON ate.usu_codigo=usu.usu_codigo")
          .append(" LEFT JOIN conselho con ON usr.con_codigo = con.con_codigo")
          .append(" LEFT JOIN cidade cid ON usu.cid_codigo_nasc = cid.cid_codigo")
          .append(" JOIN medico_especialidade med ON med.med_codigo = usr.usr_codigo")
          .append(" JOIN especialidade esp ON esp.esp_codigo = med.esp_codigo")
          .append(" WHERE enc.enc_ext_codigo =:codigo");

        return sb.toString();
    }

}
