package br.com.elotech.websaude.integracao.esus.model;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import static br.com.elotech.websaude.integracao.esus.model.dao.Conexao.CONN;

public class BancoAtendimentoIndividual {
  protected String sql = "";
  protected PreparedStatement pstmt;

  public ResultSet getDados() throws SQLException {
    StringBuilder builder = new StringBuilder();
    builder.append(" SELECT DISTINCT")
      .append("   eai.ate_codigo,")
      .append("   eai.co_local_atend,")
      .append("   eai.eai_cbo_codigo_2002,")
      .append("   eai.eai_cnes,")
      .append("   eai.eai_codigo_ibge_mun,")
      .append("   eai.eai_dtatendimento,")
      .append("   eai.eai_dtnascimento,")
      .append("   eai.eai_num_cartao_sus,")
      .append("   eai.eai_numprontuario,")
      .append("   eai.eai_profissional_cns,")
      .append("   eai.eai_sexo,")
      .append("   eai.eai_tipo_atendimento,")
      .append("   eai.eai_rac_saude,")
      .append("   eai.eai_perimetro_cefalico,")
      .append("   eai.eai_vacinacao_em_dia,")
      .append("   eai.eai_aleitamento_materno,")
      .append("   eai.eai_peso,")
      .append("   eai.eai_altura,")
      .append("   eai.eai_ate_dom_mod,")
      .append("   eai.eai_gravidez_planejada,")
      .append("   eai.eai_dum,")
      .append("   eai.eai_gestas_previas,")
      .append("   eai.eai_partos,")
      .append("   teq.nu_ine,")
      .append("   ate.turno,")
      .append("   ate.ate_nasf_aval,")
      .append("   ate.ate_nasf_proc,")
      .append("   ate.ate_nasf_presc,")
      .append("   c.cd10_codigo_cid as cd10_codigo,")
      .append("   cc.cd10_codigo_cid  as cd10_codigos,")
      .append("   ccc.cd10_codigo_cid as cd10_codigot,")
      .append("   eai.eai_data_hora_inicial,")
      .append("   eai.eai_data_hora_final,")
      .append("   eai.eai_cpf_cidadao,")
      .append("   eai.eai_compartilhado")
      .append(" FROM esus_atendimento_individual eai")
      .append(" INNER JOIN atendimento ate ON ate.ate_codigo = eai.ate_codigo")
      .append(" LEFT JOIN tb_equipe teq ON teq.co_seq_equipe = ate.usr_equipe_codigo")
      .append(" LEFT JOIN cid10 c ON c.cd10_codigo=ate.cd10_codigo")
      .append(" LEFT JOIN cid10 cc ON cc.cd10_codigo=ate.cd10_codigos")
      .append(" LEFT JOIN cid10 ccc ON ccc.cd10_codigo=ate.cd10_codigot")
      .append(" WHERE uuid_ficha IS NULL OR uuid_ficha = ''");
    pstmt = CONN.prepareStatement(builder.toString());
    return pstmt.executeQuery();
  }

  public ResultSet getCiaps(int ateCodigo) throws SQLException {
    sql = "SELECT tbc.co_ciap FROM rl_cds_atend_individual_ciap rlai "
      + "INNER JOIN tb_ciap tbc ON rlai.co_ciap = tbc.co_seq_ciap "
      + "WHERE rlai.ate_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, ateCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getCondutas(int ateCodigo) throws SQLException {
    sql = "SELECT DISTINCT tbtc.co_cds_tipo_conduta FROM rl_cds_atend_individual_condut rlac "
      + "INNER JOIN tb_cds_tipo_conduta tbtc ON rlac.tp_cds_conduta = tbtc.co_cds_tipo_conduta "
      + "WHERE rlac.ate_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, ateCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getExames(int ateCodigo) throws SQLException {
    sql = "SELECT DISTINCT proc.proc_codigo_sus,re.proc_avaliado,re.proc_solicitado FROM requisicao_exames re "
      + "INNER JOIN procedimento proc ON re.proc_codigo = proc.proc_codigo "
      + "WHERE re.ate_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, ateCodigo);
    return pstmt.executeQuery();
  }

  public boolean atualizaStatus(String uuid, int codigo) throws SQLException {
    sql = "UPDATE esus_atendimento_individual SET uuid_ficha = ? WHERE ate_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setString(1, uuid);
    pstmt.setInt(2, codigo);
    pstmt.executeUpdate();
    return true;
  }

  public ResultSet getProfissionalAuxiliar(int ateCodigo) throws SQLException {
    sql = " SELECT "
      + " usr.cnes_cod_cns,"
      + " esp.cod_cbo,"
      + " uni.uni_cnes,"
      + " teq.nu_ine"
      + " FROM atendimento ate"
      + " JOIN usuarios usr ON usr.usr_codigo = ate.usr_codigo_compartilhado"
      + " JOIN unidade uni ON uni.uni_codigo = ate.usr_unidade_compartilhado"
      + " JOIN especialidade esp ON esp.esp_codigo = ate.usr_esp_compartilhado"
      + " LEFT JOIN tb_equipe teq ON teq.co_seq_equipe = ate.usr_equipe_compartilhado"
      + " WHERE ate.ate_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, ateCodigo);
    return pstmt.executeQuery();
  }
}
