<?php
/**
 * Arquivo de declaração da classe UsuarioMedicoDAO.
 * @package classes
 * @subpackage controllers
 * @author Rafael Cardoso Tavares <rafuszero@gmail.com>
 * @version 1.0
 * @since Março/2008
 */
Class UsuarioMedicoDAO	{

	/**
	 * Atributo que recebe a conexao com o DB.
	 *
	 * @access private
	 * @var resource
	 */
	private $conexao;

	/**
	 * Método construtor da classe.
	 *
	 * Método que usará o padrão singleton para instanciar a conexão.
	 *
	 * @acess public
	 * @see Conexao
	 */
	public function __construct()	{
		$this->conexao	= Conexao::getInstancia();
	}

	/**
	 * Método para retornar a quantidade de objetos, conforme condição informada.
	 *
	 * @access public
	 */
	public function contador($condicao, $parametros)	{

		$condicao	= Util::verificaCampo($condicao,"WHERE");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */
		$txtSql		= "SELECT count(um.med_id) as quantidade FROM cp_user_medico um
						INNER JOIN
							cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id
						INNER JOIN
							cp_user_sistema us ON us.usu_id = usum.usu_id $condicao";

		try	{

			$sql	= $this->conexao->getConexao()->prepare($txtSql);
			if (sizeof($parametros) > 0)	{
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}
			$sql->execute();

		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$result	= $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();
		return $result['quantidade'];
	}
	/**
	 * Método para retornar a quantidade de objetos, conforme condição informada.
	 *
	 * @access public
	 */
	public function contadorPorEspecialidade($condicao, $parametros)	{

		$condicao	= Util::verificaCampo($condicao,"AND");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */
		$txtSql		= "
							SELECT  count(um.med_id) as quantidade 
							FROM cp_user_medico um 
								INNER JOIN cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id 
								INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id 
								INNER JOIN cp_medico_has_especialidades ep ON um.med_id = ep.med_id 
						WHERE um.med_excluido IS NULL 
							AND us.usu_excluido IS NULL 
							AND ep.esp_id IN (SELECT esp_id FROM cp_grupos_especialidades WHERE gru_id IN (".implode(",",$_SESSION['sesGrupos'])."))
							$condicao";
		
		try	{

			//$sql	= $this->conexao->getConexao()->prepare($txtSql);
			if (sizeof($parametros) > 0)	{
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}
			$sql->execute();

		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$result	= $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();
		return $result['quantidade'];
	}

	/**
	 * Método para retornar o ultimo id os usuários
	 *
	 * @access public
	 * @see Usuario
	 */
	public function ultimoId() {

		$txtSql		= "SELECT max(med_id) as max FROM cp_user_medico";

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);
			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$result	= $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();
		return $result['max'];
	}

	/**
	 * Método para inserir os Objetos
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function inserir(UsuarioMedico $objUsuario)	{

		$txtSql		= "INSERT INTO cp_user_medico
									(med_nome,
									med_imagem,
									med_email,
									med_ref_nominal,
									med_situacao,
									med_especialidade,
									med_concessao,
									med_funcionario,
									med_classificacao,
									med_num_matricula,
									med_celular_ddd,
									med_celular,
									med_telefone_ddd,
									med_telefone,
									med_cartao_estac,
									med_cartao_estac_num,
									med_cartao_estac_obs,
									med_tipo,
									med_crm,
									med_crm_file,
									med_crm_uf,
									med_crm_validade,
									med_nascimento,
									med_nomegestor,
									med_cursoselegiveis,
									med_cred_file,
									med_cep,
									med_endereco,
									med_numero,
									med_complemento,
									med_bairro,
									med_cidade,
									med_estado,
									med_observacoes,
									estab_id,
									med_atualizacao,
									med_area_atuacao,
									med_data_bata,
									med_tamanho_bata)
							VALUES	(:nome,
									:imagem,
									:email,
									:ref_nominal,
									:situacao,
									:especialidade,
									:concessao,
									:funcionario,
									:classificacao,
									:num_matricula,
									:celular_ddd,
									:celular,
									:telefone_ddd,
									:telefone,
									:cartao_estac,
									:cartao_estac_num,
									:cartao_estac_obs,
									:tipo,
									:crm,
									:crm_file,
									:crm_uf,
									:crm_validade,
									:crm_nascimento,
									:crm_nomegestor,
									:crm_cursoselegiveis,
									:cred_file,
									:cep,
									:endereco,
									:numero,
									:complemento,
									:bairro,
									:cidade,
									:estado,
									:observacoes,
									:med_hospital,
									NOW(),
									:med_area_atuacao,
									:data_bata,
									:tamanho_bata)";
		try	{
			//Inserindo dados do Administrador
			$sql	= $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':nome',			$objUsuario->getNome(),				PDO::PARAM_STR);
			$sql->bindValue(':imagem',			$objUsuario->getImagem(),			PDO::PARAM_STR);
			$sql->bindValue(':email',			$objUsuario->getEmail(),			PDO::PARAM_STR);
			$sql->bindValue(':ref_nominal',		$objUsuario->getRef_nominal(),		PDO::PARAM_STR);
			$sql->bindValue(':situacao',		$objUsuario->getSituacao(),			PDO::PARAM_INT);
			$sql->bindValue(':especialidade',	$objUsuario->getEspecialidade(),	PDO::PARAM_STR);
			$sql->bindValue(':concessao',		$objUsuario->getConcessao(),		PDO::PARAM_STR);
			$sql->bindValue(':funcionario',		$objUsuario->getFuncionario(),		PDO::PARAM_STR);
			$sql->bindValue(':classificacao',	$objUsuario->getClassificacao(),	PDO::PARAM_STR);
			$sql->bindValue(':num_matricula',	$objUsuario->getNum_matricula(),	PDO::PARAM_STR);
			$sql->bindValue(':celular_ddd',		$objUsuario->getCelular_ddd(),		PDO::PARAM_STR);
			$sql->bindValue(':celular',			$objUsuario->getCelular(),			PDO::PARAM_STR);
			$sql->bindValue(':telefone_ddd',	$objUsuario->getTelefone_ddd(),		PDO::PARAM_STR);
			$sql->bindValue(':telefone',		$objUsuario->getTelefone(),			PDO::PARAM_STR);
			$sql->bindValue(':cartao_estac',	$objUsuario->getCartao_estac(),		PDO::PARAM_INT);
			$sql->bindValue(':cartao_estac_num',$objUsuario->getCartao_estac_num(),	PDO::PARAM_STR);
			$sql->bindValue(':cartao_estac_obs',$objUsuario->getCartao_estac_obs(),	PDO::PARAM_STR);
			$sql->bindValue(':tipo',			$objUsuario->getTipo(),				PDO::PARAM_STR);
			$sql->bindValue(':crm',				$objUsuario->getCrm(),				PDO::PARAM_STR);
			$sql->bindValue(':crm_file',		$objUsuario->getCrm_file(),			PDO::PARAM_STR);
			$sql->bindValue(':crm_uf',			$objUsuario->getCrm_uf(),			PDO::PARAM_STR);
			$sql->bindValue(':crm_validade',	$objUsuario->getCrm_validade(),		PDO::PARAM_STR);
			$sql->bindValue(':crm_nascimento',	$objUsuario->getNascimento(),		PDO::PARAM_STR);
			$sql->bindValue(':crm_nomegestor',	$objUsuario->getNomegestor(),		PDO::PARAM_STR);
			$sql->bindValue(':crm_cursoselegiveis',	$objUsuario->getCursoselegiveis(),	PDO::PARAM_STR);
			$sql->bindValue(':cred_file',		$objUsuario->getCred_file(),		PDO::PARAM_STR);
			$sql->bindValue(':cep',				$objUsuario->getCep(),				PDO::PARAM_STR);
			$sql->bindValue(':endereco',		$objUsuario->getEndereco(),			PDO::PARAM_STR);
			$sql->bindValue(':numero',			$objUsuario->getNumero(),			PDO::PARAM_STR);
			$sql->bindValue(':complemento',		$objUsuario->getComplemento(),		PDO::PARAM_STR);
			$sql->bindValue(':bairro',			$objUsuario->getBairro(),			PDO::PARAM_STR);
			$sql->bindValue(':cidade',			$objUsuario->getCidade(),			PDO::PARAM_STR);
			$sql->bindValue(':estado',			$objUsuario->getEstado(),			PDO::PARAM_STR);
			$sql->bindValue(':observacoes',		$objUsuario->getObservacoes(),		PDO::PARAM_STR);
			$sql->bindValue(':med_hospital',	$objUsuario->getHospital(),		    PDO::PARAM_INT);
			$sql->bindValue(':med_area_atuacao',$objUsuario->getAreaAtuacao(),		PDO::PARAM_STR);
			$sql->bindValue(':data_bata',       $objUsuario->getDataBata(),		    PDO::PARAM_STR);
			$sql->bindValue(':tamanho_bata',    $objUsuario->getTamanhoBata(),		PDO::PARAM_STR);
			$sql->execute();
			$med_id = self::ultimoId();

			//Inserindo dados de login
			/* OBSERVAÇÂO POR ENQUANTO NÂO ESTAR CADASTRANDO CPF PARA LOGIN DO USUARIO */
			$objUsuarioSistema = new UsuarioSistema(0,
													$objUsuario->getUser_sys()->getCpf(),
													$objUsuario->getUser_sys()->getSenha(),
													"MED", "", null, 1);
			$objUsuarioSistema->inserir();
			$usu_id = UsuarioSistema::ultimoId();

			//Inserindo relacionamento
			$txtSql		= "INSERT INTO cp_user_sistema_has_cp_user_medico
									(usu_id,
									med_id)
							VALUES	(:usu_id,
									:med_id)";
			$sql2	= $this->conexao->getConexao()->prepare($txtSql);
			$sql2->bindValue(':usu_id',	$usu_id,	PDO::PARAM_INT);
			$sql2->bindValue(':med_id',	$med_id,	PDO::PARAM_INT);
			$sql2->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$sql->closeCursor();
	}

	/**
	 * Método para listar os objetos.
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function listar($condicao = "", $parametros = array(), $order = "", $limit = "", $offset = "")	{

		$condicao	= Util::verificaCampo($condicao,"AND");
		$order		= Util::verificaCampo($order,"ORDER BY");
		$limit		= Util::verificaCampo($limit,"LIMIT");
		$offset		= Util::verificaCampo($offset,"OFFSET");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */
		$txtSql		= "
						SELECT
							um.*,
							us.*, esp_nome as med_especialidade
						FROM
							cp_user_medico um
						INNER JOIN
							cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id
						INNER JOIN
							cp_user_sistema us ON us.usu_id = usum.usu_id
						LEFT JOIN cp_especialidade ep ON um.med_especialidade = ep.esp_id
						WHERE um.med_excluido IS NULL AND us.usu_excluido IS NULL
						$condicao $order $limit $offset";

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);

			if (sizeof($parametros) > 0){
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}

			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		/**
		 * Variavel que vai receber a matriz com o recordset equivalente ao mysql_fetch_array
		 *
		 * @var recordset
		 */
		$resultado	= $sql->fetchAll();
		$sql->closeCursor();
		if( count($resultado) > 0 )	{
			foreach ($resultado as $reg)	{
				$objUserSys = new UsuarioSistema($reg['usu_id'],
												$reg['usu_cpf'],
												"",
												$reg['usu_tipo'],
												$reg['usu_datacriacao'], $reg['usu_dataalteracao'], $_SESSION['sesCMSestab']);

				$objMedico = new UsuarioMedico(  $reg['med_id'],
												$reg['estab_id'],
												$reg['med_nome'],
												$reg['med_imagem'],
												$reg['med_email'],
												$reg['med_ref_nominal'],
												$reg['med_situacao'],
												$reg['med_especialidade'],
												$reg['med_concessao'],
												$reg['med_funcionario'],
												$reg['med_classificacao'],
												$reg['med_num_matricula'],
												$reg['med_celular_ddd'],
												$reg['med_celular'],
												$reg['med_telefone_ddd'],
												$reg['med_telefone'],
												$reg['med_cartao_estac'],
												$reg['med_cartao_estac_num'],
												$reg['med_cartao_estac_obs'],
												$reg['med_tipo'],
												$reg['med_crm'],
												$reg['med_crm_file'],
												$reg['med_crm_uf'],
												$reg['med_crm_validade'],
												$reg['med_cred_file'],
												$reg['med_cep'],
												$reg['med_endereco'],
												$reg['med_numero'],
												$reg['med_complemento'],
												$reg['med_bairro'],
												$reg['med_cidade'],
												$reg['med_estado'],
												$reg['med_observacoes'],
												$reg['med_datacriacao'],
												"",
												"",
												$objUserSys,
												$reg['med_atualizacao']
											);
				$objMedico->setAreaAtuacao($reg['med_area_atuacao']);
				$objMedico->setDataBata($reg['med_data_bata']);
				$objMedico->setTamanhoBata($reg['med_tamanho_bata']);
				$objMedico->setNascimento($reg['med_nascimento']);
				$objMedico->setNomegestor($reg['med_nomegestor']);
				$objMedico->setCursoselegiveis($reg['med_cursoselegiveis']);

				$arrObjeto[] = $objMedico;
			}
			return $arrObjeto;
		}else{
			return null;
		}
	}
	/**
	 * Método para listar os objetos.
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function listarPorEspecialidade($condicao = "", $parametros = array(), $order = "", $limit = "", $offset = "")	{

		$condicao	= Util::verificaCampo($condicao,"AND");
		$order		= Util::verificaCampo($order,"ORDER BY");
		$limit		= Util::verificaCampo($limit,"LIMIT");
		$offset		= Util::verificaCampo($offset,"OFFSET");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */
		$txtSql		= "
							SELECT um.*, us.*
							FROM cp_user_medico um 
								INNER JOIN cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id 
								INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id 
								INNER JOIN cp_medico_has_especialidades ep ON um.med_id = ep.med_id 
						WHERE um.med_excluido IS NULL 
							AND us.usu_excluido IS NULL 
							AND (med_situacao = 1) 
							AND ((um.estab_id = 1) 
							AND (us.estab_id = 1)) 
							AND ep.esp_id IN (SELECT esp_id FROM cp_grupos_especialidades WHERE gru_id IN (".implode(",",$_SESSION['sesGrupos'])."))
						$condicao $order $limit $offset";

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);

			if (sizeof($parametros) > 0){
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}

			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		/**
		 * Variavel que vai receber a matriz com o recordset equivalente ao mysql_fetch_array
		 *
		 * @var recordset
		 */
		$resultado	= $sql->fetchAll();
		$sql->closeCursor();
		if( count($resultado) > 0 )	{
			$arrObjeto = null;
			foreach ($resultado as $reg) {
				// $gruposUser = UsuarioMedicoEspecialidades::listarGruposEspecialidades(' a.med_id = ' . $reg['med_id']); 
				
				// if ($gruposUser) {
				// 	$inGroup = false; 
				// 	for($x=0;$x < count($gruposUser); $x++) {
				// 		if (in_array($gruposUser[$x], $_SESSION['sesGrupos'])) {
				// 			$inGroup = true; 
				// 		}
				// 	}
				// 	if ($inGroup) { 
						$objUserSys = new UsuarioSistema($reg['usu_id'],
														$reg['usu_cpf'],
														"",
														$reg['usu_tipo'],
														$reg['usu_datacriacao'], $reg['usu_dataalteracao'], $_SESSION['sesCMSestab']);

						$objMedico = new UsuarioMedico(  $reg['med_id'],
														$reg['estab_id'],
														$reg['med_nome'],
														$reg['med_imagem'],
														$reg['med_email'],
														$reg['med_ref_nominal'],
														$reg['med_situacao'],
														$reg['med_especialidade'],
														$reg['med_concessao'],
														$reg['med_funcionario'],
														$reg['med_classificacao'],
														$reg['med_num_matricula'],
														$reg['med_celular_ddd'],
														$reg['med_celular'],
														$reg['med_telefone_ddd'],
														$reg['med_telefone'],
														$reg['med_cartao_estac'],
														$reg['med_cartao_estac_num'],
														$reg['med_cartao_estac_obs'],
														$reg['med_tipo'],
														$reg['med_crm'],
														$reg['med_crm_file'],
														$reg['med_crm_uf'],
														$reg['med_crm_validade'],
														$reg['med_cred_file'],
														$reg['med_cep'],
														$reg['med_endereco'],
														$reg['med_numero'],
														$reg['med_complemento'],
														$reg['med_bairro'],
														$reg['med_cidade'],
														$reg['med_estado'],
														$reg['med_observacoes'],
														$reg['med_datacriacao'],
														"",
														"",
														$objUserSys,
														$reg['med_atualizacao']
													);
						$objMedico->setAreaAtuacao($reg['med_area_atuacao']);
						$objMedico->setDataBata($reg['med_data_bata']);
						$objMedico->setTamanhoBata($reg['med_tamanho_bata']);
						$objMedico->setNascimento($reg['med_nascimento']);
						$objMedico->setNomegestor($reg['med_nomegestor']);
						$objMedico->setCursoselegiveis($reg['med_cursoselegiveis']);

						$arrObjeto[] = $objMedico;
				// 	}
				// }
			}
			return $arrObjeto;
		}else{
			return null;
		}
	}

	/**
	 * Método para listar os objetos.
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function listarPorTreinamento($condicao = "", $parametros = array(), $order = "", $limit = "", $offset = "")	{

		$condicao	= Util::verificaCampo($condicao,"AND");
		$order		= Util::verificaCampo($order,"ORDER BY");
		$limit		= Util::verificaCampo($limit,"LIMIT");
		$offset		= Util::verificaCampo($offset,"OFFSET");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */
		$txtSql		= "
						SELECT
							um.*,
							us.*,
							tre.tre_nome AS med_treinamento,
							ut.mt_anexo AS mt_anexo,
							ut.mt_data AS med_datacriacao,
							ut.mt_validade AS med_validade
						FROM
							cp_treinamentos tre,
							cp_user_medico_has_cp_treinamentos ut,
							cp_user_medico um
						INNER JOIN
							cp_user_sistema_has_cp_user_medico usum ON usum.med_id = um.med_id
						INNER JOIN
							cp_user_sistema us ON us.usu_id = usum.usu_id
						WHERE
							tre.tre_id = ut.tre_id
						AND
							ut.med_id = um.med_id
						AND
							((um.estab_id = ".$_SESSION['sesCMSestab'].") OR (um.estab_id = 0))
						$condicao $order $limit $offset";

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);

			if (sizeof($parametros) > 0){
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}

			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		/**
		 * Variavel que vai receber a matriz com o recordset equivalente ao mysql_fetch_array
		 *
		 * @var recordset
		 */
		$resultado	= $sql->fetchAll();
		$sql->closeCursor();
		if( count($resultado) > 0 )	{
			foreach ($resultado as $reg)	{
				$objUserSys = new UsuarioSistema($reg['usu_id'],
												$reg['usu_cpf'],
												"",
												$reg['usu_tipo'],
												$reg['usu_datacriacao'],"",$reg['estab_id']);

				$treinamento = array("nome"=>$reg['med_treinamento'], "anexo" => $reg["mt_anexo"], "datacriacao"=>$reg['med_datacriacao'], "validade"=>$reg['med_validade'],"dataatualizacao"=>$reg['med_atualizacao']);

				$objMedico = new UsuarioMedico(  $reg['med_id'],
												$reg['estab_id'],
												$reg['med_nome'],
												$reg['med_imagem'],
												$reg['med_email'],
												$reg['med_ref_nominal'],
												$reg['med_situacao'],
												$reg['med_especialidade'],
												$reg['med_concessao'],
												$reg['med_funcionario'],
												$reg['med_classificacao'],
												$reg['med_num_matricula'],
												$reg['med_celular_ddd'],
												$reg['med_celular'],
												$reg['med_telefone_ddd'],
												$reg['med_telefone'],
												$reg['med_cartao_estac'],
												$reg['med_cartao_estac_num'],
												$reg['med_cartao_estac_obs'],
												$reg['med_tipo'],
												$reg['med_crm'],
												$reg['med_crm_file'],
												$reg['med_crm_uf'],
												$reg['med_crm_validade'],
												$reg['med_cred_file'],
												$reg['med_cep'],
												$reg['med_endereco'],
												$reg['med_numero'],
												$reg['med_complemento'],
												$reg['med_bairro'],
												$reg['med_cidade'],
												$reg['med_estado'],
												$reg['med_observacoes'],
												$reg['med_datacriacao'],
												$treinamento,
												"",
												$objUserSys,
												$reg['med_atualizacao']
											);
				$objMedico->setAreaAtuacao($reg['med_area_atuacao']);
				$objMedico->setDataBata($reg['med_data_bata']);
				$objMedico->setTamanhoBata($reg['med_tamanho_bata']);
				$objMedico->setNascimento($reg['med_nascimento']);
				$objMedico->setNomegestor($reg['med_nomegestor']);
				$objMedico->setCursoselegiveis($reg['med_cursoselegiveis']);

				$arrObjeto[] = $objMedico;
			}

			//Util::dump($arrObjeto);
			return $arrObjeto;
		}else{
			return null;
		}
	}

	/**
	 * Método para listar os objetos.
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function listarPorAvaliacao($condicao = "", $parametros = array(), $order = "", $limit = "", $offset = "")	{

		$condicao	= Util::verificaCampo($condicao,"AND");
		$order		= Util::verificaCampo($order,"ORDER BY");
		$limit		= Util::verificaCampo($limit,"LIMIT");
		$offset		= Util::verificaCampo($offset,"OFFSET");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */

		$txtSql = "SELECT
						DISTINCT um.*,
						ma.ma_id AS ma_id,
						ava.ava_id AS ava_id,
						ava.ava_nome AS med_avaliacao,
						ma.ma_datacriacao AS med_dataavaliacao,
						ma.ma_data AS anoavaliacao
					FROM
						cp_avaliacoes ava,
						cp_medico_has_avaliacao ma,
						cp_user_medico um
					WHERE ava.ava_id = ma.ava_id
						AND ma.med_id = um.med_id
						AND ((um.estab_id = ".$_SESSION['sesCMSestab'].") OR (um.estab_id = 0))
							   AND um.med_situacao = 1
							   $condicao $order $limit $offset";
		/*
		$txtSql		= "
						SELECT DISTINCT
							  um.*,
							  us.*,

							  ma.ma_id AS ma_id,
							  ava.ava_id AS ava_id,
							  ava.ava_nome AS med_avaliacao,
							  ma.ma_datacriacao AS med_dataavaliacao
						FROM
							cp_avaliacoes ava,
							cp_treinamentos tre,
							cp_user_medico_has_cp_treinamentos ut,
							cp_medico_has_avaliacao ma,
							cp_user_medico um
						INNER JOIN
							  cp_user_sistema_has_cp_user_medico usum ON usum.med_id = um.med_id
						INNER JOIN
							  cp_user_sistema us ON us.usu_id = usum.usu_id
						WHERE
							 ava.ava_id = ma.ava_id
						AND
						   ma.med_id = um.med_id
						AND
						   ut.tre_id = tre.tre_id
						AND
						   ut.med_id = um.med_id
						AND
						   ((um.estab_id = ".$_SESSION['sesCMSestab'].") OR (um.estab_id = 0))
						$condicao $order $limit $offset";
		*/

		//exit();

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);

			if (sizeof($parametros) > 0){
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}

			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		/**
		 * Variavel que vai receber a matriz com o recordset equivalente ao mysql_fetch_array
		 *
		 * @var recordset
		 */
		$resultado	= $sql->fetchAll();
		$sql->closeCursor();
		if( count($resultado) > 0 )	{
			foreach ($resultado as $reg) {
				$usu_id = isset($reg['usu_id']) ? $reg['usu_id'] : null;
				$usu_cpf = isset($reg['usu_cpf']) ? $reg['usu_cpf'] : null;
				$usu_tipo = isset($reg['usu_tipo']) ? $reg['usu_tipo'] : null;
				$usu_datacriacao = isset($reg['usu_datacriacao']) ? $reg['usu_datacriacao'] : null;
				$estab_id = isset($reg['estab_id']) ? $reg['estab_id'] : null;

				$objUserSys = new UsuarioSistema(
					$usu_id,
					$usu_cpf,
					"",
					$usu_tipo,
					$usu_datacriacao,
					"",
					$estab_id
				);

				$avaliacao = array("ma_id"=>$reg['ma_id'], "ava_id"=>$reg['ava_id'], "nome"=>$reg['med_avaliacao'], "datacriacao"=>$reg['med_dataavaliacao'], "dataatualizacao"=>$reg['med_atualizacao'], "anocriacao" => $reg['anoavaliacao']);

				$objMedico = new UsuarioMedico(  $reg['med_id'],
												$reg['estab_id'],
												$reg['med_nome'],
												$reg['med_imagem'],
												$reg['med_email'],
												$reg['med_ref_nominal'],
												$reg['med_situacao'],
												$reg['med_especialidade'],
												$reg['med_concessao'],
												$reg['med_funcionario'],
												$reg['med_classificacao'],
												$reg['med_num_matricula'],
												$reg['med_celular_ddd'],
												$reg['med_celular'],
												$reg['med_telefone_ddd'],
												$reg['med_telefone'],
												$reg['med_cartao_estac'],
												$reg['med_cartao_estac_num'],
												$reg['med_cartao_estac_obs'],
												$reg['med_tipo'],
												$reg['med_crm'],
												$reg['med_crm_file'],
												$reg['med_crm_uf'],
												$reg['med_crm_validade'],
												$reg['med_cred_file'],
												$reg['med_cep'],
												$reg['med_endereco'],
												$reg['med_numero'],
												$reg['med_complemento'],
												$reg['med_bairro'],
												$reg['med_cidade'],
												$reg['med_estado'],
												$reg['med_observacoes'],
												$reg['med_datacriacao'],
												//$reg['med_treinamento'],
												"",
												$avaliacao,
												$objUserSys,
												$reg['med_atualizacao']
											);
				$objMedico->setAreaAtuacao($reg['med_area_atuacao']);
				$objMedico->setDataBata($reg['med_data_bata']);
				$objMedico->setTamanhoBata($reg['med_tamanho_bata']);
				$objMedico->setNascimento($reg['med_nascimento']);
				$objMedico->setNomegestor($reg['med_nomegestor']);
				$objMedico->setCursoselegiveis($reg['med_cursoselegiveis']);

				$arrObjeto[] = $objMedico;
			}

			//Util::dump($arrObjeto);
			return $arrObjeto;
		}else{
			return null;
		}
	}

	/**
	 * Método para listar os objetos.
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function MediaPorAvaliacao($condicao = "", $parametros = array(), $order = "", $limit = "", $offset = "")	{

		$condicao	= Util::verificaCampo($condicao,"AND");
		$order		= Util::verificaCampo($order,"ORDER BY");
		$limit		= Util::verificaCampo($limit,"LIMIT");
		$offset		= Util::verificaCampo($offset,"OFFSET");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */

		$txtSql = "  SELECT SUM(c.ava_id) as total,
							MAX(c.ma_media_geral) as media_maxima,
			 				MIN(c.ma_media_geral) as media_minima, 
							AVG(c.ma_media_geral) as media,
							YEAR(a.ava_datacriacao) as ano, 
							a.ava_nome as nome, 
							a.ava_id as id,
							b.gru_nome as grupo  
					  FROM cp_avaliacoes a 
							INNER JOIN cp_grupos b ON a.gru_id = b.gru_id
							INNER JOIN cp_medico_has_avaliacao c ON a.ava_id = c.ava_id 
							$condicao GROUP BY a.ava_id, a.ava_nome, b.gru_nome $order $limit $offset";
		

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);

			if (sizeof($parametros) > 0){
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}

			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$resultado	= $sql->fetchAll();
		$sql->closeCursor();
		if( count($resultado) > 0 )	{
			foreach ($resultado as $reg) {
				$arrObjeto[] = array("id" => $reg['id'], 
									 "ano" => $reg['ano'], 
									 "avaliacao" => $reg['nome'], 
									 "grupo" => $reg['grupo'], 
									 "total" => $reg['total'], 
									 "maxima" => $reg['media_maxima'],
									 "minima" => $reg['media_minima'], 
									 "media" => $reg['media']);
			}
			return $arrObjeto;
		}else{
			return null;
		}
	}

	/**
	 * Método para exclusão dos objetos
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function excluir($id)	{

		try	{
			//recuperando dados de login
			$txtSql	= "SELECT * FROM cp_user_sistema_has_cp_user_medico
							WHERE  med_id = :med_id";
			$sql	= $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(":med_id", $id, PDO::PARAM_INT);
			$sql->execute();
			$dados = $sql->fetch(PDO::FETCH_ASSOC);

			//deletando dados de login
			// $txtSql	= "DELETE FROM cp_user_sistema_has_cp_user_medico
			// 				WHERE med_id  = :med_id";
			// $sql1	= $this->conexao->getConexao()->prepare($txtSql);
			// $sql1->bindValue(":med_id", $id, PDO::PARAM_INT);
			// $sql1->execute();

			//Deletar administrador
			$txtSql	= "UPDATE cp_user_medico SET med_excluido = NOW()
					WHERE med_id  = :med_id";
			
			$sql2	= $this->conexao->getConexao()->prepare($txtSql);
			$sql2->bindValue(":med_id", $id, PDO::PARAM_INT);
			$sql2->execute();

			//deletando dados de login
			$txtSql	= "UPDATE  cp_user_sistema SET usu_excluido = NOW()
							WHERE usu_id  = :usu_id";
			$sql4	= $this->conexao->getConexao()->prepare($txtSql);
			$sql4->bindValue(":usu_id", $dados['usu_id'], PDO::PARAM_INT);
			$sql4->execute();

		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}
		$sql->closeCursor();
	}

	/**
	 * Método para buscar o objeto;
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function buscar($id, $campo)	{
		 $txtSql	= "SELECT  um.*, us.*, usum.* FROM cp_user_medico um
							INNER JOIN cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id
							INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id
							WHERE um.med_excluido IS NULL AND us.usu_excluido IS NULL 
							 AND $campo = :med_id";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(":med_id", $id, PDO::PARAM_INT);
			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$resultado	= $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();

		if($resultado)	{
			$objUserSys = new UsuarioSistema($resultado['usu_id'],
												$resultado['usu_cpf'],
												"",
												$resultado['usu_tipo'],
												$resultado['usu_datacriacao'],
												$resultado['usu_dataalteracao'],
												$resultado['estab_id']);

			$arrObjeto = new UsuarioMedico(  $resultado['med_id'],
												$resultado['estab_id'],
												$resultado['med_nome'],
												$resultado['med_imagem'],
												$resultado['med_email'],
												$resultado['med_ref_nominal'],
												$resultado['med_situacao'],
												$resultado['med_especialidade'],
												$resultado['med_concessao'],
												$resultado['med_funcionario'],
												$resultado['med_classificacao'],
												$resultado['med_num_matricula'],
												$resultado['med_celular_ddd'],
												$resultado['med_celular'],
												$resultado['med_telefone_ddd'],
												$resultado['med_telefone'],
												$resultado['med_cartao_estac'],
												$resultado['med_cartao_estac_num'],
												$resultado['med_cartao_estac_obs'],
												$resultado['med_tipo'],
												$resultado['med_crm'],
												$resultado['med_crm_file'],
												$resultado['med_crm_uf'],
												$resultado['med_crm_validade'],
												$resultado['med_cred_file'],
												$resultado['med_cep'],
												$resultado['med_endereco'],
												$resultado['med_numero'],
												$resultado['med_complemento'],
												$resultado['med_bairro'],
												$resultado['med_cidade'],
												$resultado['med_estado'],
												$resultado['med_observacoes'],
												$resultado['med_datacriacao'],
												$objUserSys,
												null,
												$objUserSys
												 );
			$arrObjeto->setAtualizacao($resultado['med_atualizacao']);
			$arrObjeto->setAreaAtuacao($resultado['med_area_atuacao']);
			$arrObjeto->setDataBata($resultado['med_data_bata']);
			$arrObjeto->setTamanhoBata($resultado['med_tamanho_bata']);
			$arrObjeto->setNascimento($resultado['med_nascimento']);
			$arrObjeto->setNomegestor($resultado['med_nomegestor']);
			$arrObjeto->setCursoselegiveis($resultado['med_cursoselegiveis']);

			return $arrObjeto;
		}else{
			throw new Exception("Nenhum Usuário encontrado");
		}
	}


	/**
	 * Método para existe o objeto;
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function buscarPeloCrm($id, $campo, $tipo) {
		$txtSql	= "SELECT  um.*, us.*, usum.* FROM cp_user_medico um
							INNER JOIN cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id
							INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id
							WHERE um.med_excluido IS NULL AND us.usu_excluido IS NULL  
							  AND $campo = :med_crm AND (um.med_tipo = :tipo) AND (um.estab_id = 0 OR um.estab_id = ".$_SESSION['sesCMSestab'].")";
		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(":med_crm", $id, PDO::PARAM_STR);
			$sql->bindValue(":tipo", $tipo, PDO::PARAM_STR);
			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		//$resultado	= $sql->fetch(PDO::FETCH_ASSOC);
		$result	= $sql->fetchAll();
		$sql->closeCursor();
		if(count($result)> 0)	{
			foreach($result as $resultado) {
				if (($_SESSION['sesCMSestab'] == $resultado['estab_id']) || ($resultado['estab_id'] == 0)){
					$arrObjeto = new UsuarioMedico(  $resultado['med_id'],
								$resultado['estab_id'],
								$resultado['med_nome'],
								$resultado['med_imagem'],
								$resultado['med_email'],
								$resultado['med_ref_nominal'],
								$resultado['med_situacao'],
								$resultado['med_especialidade'],
								$resultado['med_concessao'],
								$resultado['med_funcionario'],
								$resultado['med_classificacao'],
								$resultado['med_num_matricula'],
								$resultado['med_celular_ddd'],
								$resultado['med_celular'],
								$resultado['med_telefone_ddd'],
								$resultado['med_telefone'],
								$resultado['med_cartao_estac'],
								$resultado['med_cartao_estac_num'],
								$resultado['med_cartao_estac_obs'],
								$resultado['med_tipo'],
								$resultado['med_crm'],
								$resultado['med_crm_file'],
								$resultado['med_crm_uf'],
								$resultado['med_crm_validade'],
								$resultado['med_cred_file'],
								$resultado['med_cep'],
								$resultado['med_endereco'],
								$resultado['med_numero'],
								$resultado['med_complemento'],
								$resultado['med_bairro'],
								$resultado['med_cidade'],
								$resultado['med_estado'],
								$resultado['med_observacoes'],
								$resultado['med_datacriacao']
								//$objUserSys
								);
					$arrObjeto->setAtualizacao($resultado['med_atualizacao']);
					$arrObjeto->setAreaAtuacao($resultado['med_area_atuacao']);
					$arrObjeto->setDataBata($resultado['med_data_bata']);
					$arrObjeto->setTamanhoBata($resultado['med_tamanho_bata']);
					$arrObjeto->setNascimento($resultado['med_nascimento']);
					$arrObjeto->setNomegestor($resultado['med_nomegestor']);
					$arrObjeto->setCursoselegiveis($resultado['med_cursoselegiveis']);

					return $arrObjeto;
				}
			}

		}

		return false;
	}

	/**
	 * Método para existe o objeto;
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function buscarIntegracao($id)
	{
		$txtSql	= "SELECT med_nome, med_integracao, med_obs_integracao FROM cp_user_medico WHERE med_id = :med_id";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(":med_id", $id, PDO::PARAM_INT);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$resultado = $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();

		if (count($resultado) > 0) {
			return array(
				"med_nome" => $resultado['med_nome'],
				"med_integracao" => $resultado['med_integracao'],
				"med_obs_integracao" => $resultado['med_obs_integracao']
			);
		}

		return null;
	}


	/**
	 * Método para existe o objeto;
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function existe($id, $campo)	{
		 $txtSql	= "SELECT  um.*, us.*, usum.* FROM cp_user_medico um
							INNER JOIN cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id
							INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id
							WHERE um.med_excluido IS NULL AND us.usu_excluido IS NULL 
							AND $campo = :med_id";

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);

			$sql->bindValue(":med_id", $id, PDO::PARAM_INT);
			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		$resultado	= $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();

		if($resultado)	{
			return true;
		}else{
			return false;
		}
	}


	/**
	 * Editar dados do objeto
	 * @param UsuarioMedico $objUsuario
	 * @throws BancoExcecao
	 */
	public function editar(UsuarioMedico $objUsuario)
	{
		$txtSql	= "UPDATE cp_user_medico SET
					   med_nome 	 		 = :nome,
					   med_imagem 	 		 = :imagem,
					   med_email 	 		 = :email,
					   med_ref_nominal 	 	 = :ref_nominal,
					   med_situacao 	 	 = :situacao,
					   med_especialidade 	 = :especialidade,
					   med_area_atuacao 	 = :med_area_atuacao,
					   med_concessao 	 	 = :concessao,
					   med_funcionario 	 	 = :funcionario,
					   med_classificacao 	 = :classificacao,
					   med_num_matricula 	 = :num_matricula,
					   med_celular_ddd 		 = :celular_ddd,
					   med_celular 	 		 = :celular,
					   med_telefone_ddd	 	 = :telefone_ddd,
					   med_telefone 	 	 = :telefone,
					   med_cartao_estac 	 = :cartao_estac,
					   med_cartao_estac_num  = :cartao_estac_num,
					   med_cartao_estac_obs  = :cartao_estac_obs,
					   med_tipo  			 = :tipo,
					   med_crm 	 		 	 = :crm,
					   med_crm_file  		 = :crm_file, ".
					   "
					   med_crm_uf 	 		 = :crm_uf, ".
					   //med_crm_validade 	 = :crm_validade,
					   "
					   med_nascimento  		 = :crm_nascimento,
					   med_nomegestor  		 = :crm_nomegestor,
					   med_cursoselegiveis	 = :crm_cursoselegiveis,
					   med_cred_file  		 = :cred_file,
					   med_cep		 	 	 = :cep,
					   med_endereco 	 	 = :endereco,
					   med_numero	 	 	 = :numero,
					   med_complemento 	 	 = :complemento,
					   med_bairro 	 		 = :bairro,
					   med_cidade 	 		 = :cidade,
					   med_estado 	 		 = :estado,
					   med_observacoes 	 	 = :observacoes,
					   estab_id 	 	     = :med_hospital,
					   med_atualizacao       = NOW(),
					   med_data_bata         = :data_bata,
					   med_tamanho_bata      = :tamanho_bata
					   where med_id  	 	 = :med_id";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':nome',			$objUsuario->getNome(),				PDO::PARAM_STR);
			$sql->bindValue(':imagem',			$objUsuario->getImagem(),			PDO::PARAM_STR);
			$sql->bindValue(':email',			$objUsuario->getEmail(),			PDO::PARAM_STR);
			$sql->bindValue(':ref_nominal',		$objUsuario->getRef_nominal(),		PDO::PARAM_STR);
			$sql->bindValue(':situacao',		$objUsuario->getSituacao(),			PDO::PARAM_INT);
			$sql->bindValue(':especialidade',	$objUsuario->getEspecialidade(),	PDO::PARAM_STR);
			$sql->bindValue(':concessao',		$objUsuario->getConcessao(),		PDO::PARAM_STR);
			$sql->bindValue(':funcionario',		$objUsuario->getFuncionario(),		PDO::PARAM_STR);
			$sql->bindValue(':classificacao',	$objUsuario->getClassificacao(),	PDO::PARAM_STR);
			$sql->bindValue(':num_matricula',	$objUsuario->getNum_matricula(),	PDO::PARAM_STR);
			$sql->bindValue(':celular_ddd',		$objUsuario->getCelular_ddd(),		PDO::PARAM_STR);
			$sql->bindValue(':celular',			$objUsuario->getCelular(),			PDO::PARAM_STR);
			$sql->bindValue(':telefone_ddd',	$objUsuario->getTelefone_ddd(),		PDO::PARAM_STR);
			$sql->bindValue(':telefone',		$objUsuario->getTelefone(),			PDO::PARAM_STR);
			$sql->bindValue(':cartao_estac',	$objUsuario->getCartao_estac(),		PDO::PARAM_INT);
			$sql->bindValue(':cartao_estac_num',$objUsuario->getCartao_estac_num(),	PDO::PARAM_STR);
			$sql->bindValue(':cartao_estac_obs',$objUsuario->getCartao_estac_obs(),	PDO::PARAM_STR);
			$sql->bindValue(':tipo',			$objUsuario->getTipo(),				PDO::PARAM_STR);
			$sql->bindValue(':crm',				$objUsuario->getCrm(),				PDO::PARAM_STR);
			$sql->bindValue(':crm_file',		$objUsuario->getCrm_file(),			PDO::PARAM_STR);
			$sql->bindValue(':crm_uf',			$objUsuario->getCrm_uf(),			PDO::PARAM_STR);
			//$sql->bindValue(':crm_validade',	$objUsuario->getCrm_validade(),		PDO::PARAM_STR);
			$sql->bindValue(':crm_nascimento',	$objUsuario->getNascimento(),		PDO::PARAM_STR);
			$sql->bindValue(':crm_nomegestor',	$objUsuario->getNomegestor(),		PDO::PARAM_STR);
			$sql->bindValue(':crm_cursoselegiveis',	$objUsuario->getCursoselegiveis(),		PDO::PARAM_STR);
			$sql->bindValue(':cred_file',		$objUsuario->getCred_file(),		PDO::PARAM_STR);
			$sql->bindValue(':cep',				$objUsuario->getCep(),				PDO::PARAM_STR);
			$sql->bindValue(':endereco',		$objUsuario->getEndereco(),			PDO::PARAM_STR);
			$sql->bindValue(':numero',			$objUsuario->getNumero(),			PDO::PARAM_STR);
			$sql->bindValue(':complemento',		$objUsuario->getComplemento(),		PDO::PARAM_STR);
			$sql->bindValue(':bairro',			$objUsuario->getBairro(),			PDO::PARAM_STR);
			$sql->bindValue(':cidade',			$objUsuario->getCidade(),			PDO::PARAM_STR);
			$sql->bindValue(':estado',			$objUsuario->getEstado(),			PDO::PARAM_STR);
			$sql->bindValue(':observacoes',		$objUsuario->getObservacoes(),		PDO::PARAM_STR);
			$sql->bindValue(":med_id", 			$objUsuario->getId(), 				PDO::PARAM_INT);
			$sql->bindValue(":med_hospital",	$objUsuario->getHospital(), 		PDO::PARAM_INT);
			$sql->bindValue(":med_area_atuacao",$objUsuario->getAreaAtuacao(), 		PDO::PARAM_STR);
			$sql->bindValue(":data_bata",       $objUsuario->getDataBata(), 		PDO::PARAM_STR);
			$sql->bindValue(":tamanho_bata",    $objUsuario->getTamanhoBata(), 		PDO::PARAM_STR);

			$hospital = $objUsuario->getHospital();
			$med_id = $objUsuario->getId();

			$sql->execute();

			$txtSql_ = "SELECT  um.*, us.*, usum.* FROM cp_user_medico um
			INNER JOIN cp_user_sistema_has_cp_user_medico usum ON um.med_id = usum.med_id
			INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id
			WHERE um.med_id = $med_id";

			try	{
				$sql_ = $this->conexao->getConexao()->prepare($txtSql_);
				$sql_->execute();
			}catch(PDOException $ex){
				throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
			}

			$resultado	= $sql_->fetch(PDO::FETCH_ASSOC);
			$sql_->closeCursor();
			if($resultado)	{
				$id_usu = $resultado['usu_id'];
			}

			$txtSqlSenha = "";
			if($objUsuario->getUser_sys()->getSenha() != "")
				$txtSqlSenha = ", usu_senha = PASSWORD(:senha)";

			if (!empty($_POST['med_cpf'])) {
				$comp = "usu_cpf 	 		 = '".$_POST['med_cpf']."',";
			}

			$txtSql	= "UPDATE cp_user_sistema SET
					   $comp
					   estab_id          = $hospital
					   $txtSqlSenha
					   where usu_id  	 	 = $id_usu";


			$sql2	= $this->conexao->getConexao()->prepare($txtSql);
			$sql2->bindValue(":cpf", 	$objUsuario->getUser_sys()->getCpf(),	PDO::PARAM_STR);
			$sql2->bindValue(":usu_id", $objUsuario->getUser_sys()->getId(),	PDO::PARAM_INT);
			if($txtSqlSenha != "") {$sql2->bindValue(":senha", $objUsuario->getUser_sys()->getSenha(), PDO::PARAM_STR); }
			$sql2->execute();

		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}
		$sql->closeCursor();

	}



	/**
	 * Editar dados do objeto
	 * @param UsuarioMedico $objUsuario
	 * @throws BancoExcecao
	 */
	public function editarCrm(UsuarioMedico $objUsuario)	{

		$txtSql		= "UPDATE cp_user_medico SET
					   med_crm_file  		 = :crm_file,
					   med_crm_validade 	 = :crm_validade,
					   med_cred_file  		 = :cred_file,
					   med_atualizacao       = NOW()
					   where med_id  	 	 = :med_id";

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':crm_file',		$objUsuario->getCrm_file(),			PDO::PARAM_STR);
			$sql->bindValue(':crm_validade',	$objUsuario->getCrm_validade(),		PDO::PARAM_STR);
			$sql->bindValue(':cred_file',		$objUsuario->getCred_file(),		PDO::PARAM_STR);
			$sql->bindValue(":med_id", 			$objUsuario->getId(), 				PDO::PARAM_INT);

			$sql->execute();

		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}
	}

	/**
	 * Editar dados do objeto
	 * @param UsuarioMedico $objUsuario
	 * @throws BancoExcecao
	 */
	public function editarIntegracao($dataIntegracao, $obs, $med_id)
	{
		$campo = "";
		if($dataIntegracao != '' && $dataIntegracao != null) {
			$campo = ' med_integracao = :integracao, ';
		}
		$txtSql = "UPDATE cp_user_medico SET " . $campo . "  med_obs_integracao = :obs WHERE med_id = :med_id";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			if($dataIntegracao != '' && $dataIntegracao != null) {
				$sql->bindValue(':integracao', $dataIntegracao, PDO::PARAM_STR);
			}
			$sql->bindValue(':obs', $obs, PDO::PARAM_STR);
			$sql->bindValue(":med_id", $med_id, PDO::PARAM_INT);
			$sql->execute();

		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}
	}

	/**
	 * Método para listar os objetos.
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function listarEspecialidades($estab = 0)	{

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */
		$txtSql = "SELECT DISTINCT um.med_especialidade FROM cp_user_medico um WHERE um.med_excluido IS NULL AND um.med_situacao = 1 AND um.estab_id = :estab";
		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':estab', $estab, PDO::PARAM_INT);
			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		/**
		 * Variavel que vai receber a matriz com o recordset equivalente ao mysql_fetch_array
		 *
		 * @var recordset
		 */
		$resultado	= $sql->fetchAll();
		$sql->closeCursor();
		if( count($resultado) > 0 )	{
			return $resultado;
		}else{
			return array();
		}
	}

	/**
	 * Método para listar os objetos.
	 *
	 * @access public
	 * @see UsuarioMedico
	 */
	public function listarByTitulos($condicao = "", $parametros = array(), $order = "", $exist)	{

		$condicao	= Util::verificaCampo($condicao,"AND");
		$order		= Util::verificaCampo($order,"ORDER BY");

		/**
		 * Variavel que vai receber a instrução SQL
		 *
		 * @var string $txtSql
		 */

		if ($exist) {
			$txtSql		= "SELECT DISTINCT um.med_id, um.*, us.* FROM cp_user_medico um
								INNER JOIN cp_user_sistema_has_cp_user_medico usum ON usum.med_id = um.med_id
								INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id
								INNER JOIN cp_medico_titulos mt ON mt.med_id = um.med_id
								INNER JOIN cp_medico_titulos_has_cp_titulos mtht ON mtht.tit_id = mt.tit_id
								WHERE um.med_excluido IS NULL AND us.usu_excluido IS NULL 
								AND ((um.estab_id = ".$_SESSION['sesCMSestab']." ) OR (um.estab_id = 0))
								$condicao $order";
		}else{
			$txtSql		= "SELECT um.*, us.* FROM cp_user_medico um
								INNER JOIN cp_user_sistema_has_cp_user_medico usum ON usum.med_id = um.med_id
								INNER JOIN cp_user_sistema us ON us.usu_id = usum.usu_id
								WHERE um.med_excluido IS NULL AND us.usu_excluido IS NULL 
								AND ((um.estab_id = ".$_SESSION['sesCMSestab']." ) OR (um.estab_id = 0))
								$condicao $order";
		}
		//echo $txtSql;

		try	{
			$sql	= $this->conexao->getConexao()->prepare($txtSql);

			if (sizeof($parametros) > 0){
				foreach ($parametros as $params)	{
					switch ($params['tipo']) {
						case "STR":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_STR);
							break;
						case "INT":
							$sql->bindValue($params['referencia'], $params['valor'], PDO::PARAM_INT);
							break;
					}
				}
			}

			$sql->execute();
		}catch(PDOException $ex){
			throw new BancoExcecao($ex->getMessage(),$txtSql,__FILE__,__CLASS__,__METHOD__,__LINE__);
		}

		/**
		 * Variavel que vai receber a matriz com o recordset equivalente ao mysql_fetch_array
		 *
		 * @var recordset
		 */
		$resultado	= $sql->fetchAll();
		$sql->closeCursor();
		if( count($resultado) > 0 )	{
			foreach ($resultado as $reg)	{
				$txtSql		= "SELECT t.type_descricao FROM cp_medico_titulos mt
							INNER JOIN cp_medico_titulos_has_cp_titulos mtht ON mtht.tit_id = mt.tit_id
							INNER JOIN cp_titulos t ON t.type_id = mtht.type_id
							WHERE mt.med_id = ".$reg['med_id'];

				$sql	= $this->conexao->getConexao()->prepare($txtSql);

				$sql->execute();
				$especialidades	= $sql->fetchAll();
				$sql->closeCursor();

				$qtd = 0;
				if (!$exist) {
					$qtd = count($especialidades);
				}

				$especs = array();
				if (count($especialidades) > 0) {
					foreach ($especialidades as $esp) {
						$especs[] = $esp['type_descricao'];
					}
				}

				if ($qtd==0) {
					$objUserSys = new UsuarioSistema($reg['usu_id'],
													$reg['usu_cpf'],
													"",
													$reg['usu_tipo'],
													$reg['usu_datacriacao'],"",$reg['estab_id']);

					$objMedico = new UsuarioMedico(  $reg['med_id'],
													$reg['estab_id'],
													$reg['med_nome'],
													$reg['med_imagem'],
													$reg['med_email'],
													$reg['med_ref_nominal'],
													$reg['med_situacao'],
													//$reg['med_especialidade'],
													$especs,
													$reg['med_concessao'],
													$reg['med_funcionario'],
													$reg['med_classificacao'],
													$reg['med_num_matricula'],
													$reg['med_celular_ddd'],
													$reg['med_celular'],
													$reg['med_telefone_ddd'],
													$reg['med_telefone'],
													$reg['med_cartao_estac'],
													$reg['med_cartao_estac_num'],
													$reg['med_cartao_estac_obs'],
													$reg['med_tipo'],
													$reg['med_crm'],
													$reg['med_crm_file'],
													$reg['med_crm_uf'],
													$reg['med_crm_validade'],
													$reg['med_cred_file'],
													$reg['med_cep'],
													$reg['med_endereco'],
													$reg['med_numero'],
													$reg['med_complemento'],
													$reg['med_bairro'],
													$reg['med_cidade'],
													$reg['med_estado'],
													$reg['med_observacoes'],
													$reg['med_datacriacao'],
													//$especs,
													"",
													"",
													$objUserSys,
													$reg['med_atualizacao']);
					$objMedico->setAreaAtuacao($reg['med_area_atuacao']);
					$objMedico->setDataBata($reg['med_data_bata']);
					$objMedico->setTamanhoBata($reg['med_tamanho_bata']);
					$objMedico->setNascimento($reg['med_nascimento']);
					$objMedico->setNomegestor($reg['med_nomegestor']);
					$objMedico->setCursoselegiveis($reg['med_cursoselegiveis']);

					$arrObjeto[] = $objMedico;
				}
			}
			return $arrObjeto;
		}else{
			return null;
		}
	}

	public function listarSemAvaliacao($tipo = "")
	{
		$txtSql = "SELECT med_id, med_nome, med_crm FROM cp_user_medico WHERE estab_id = 1 AND med_situacao = 1 ORDER BY med_nome ASC";

		/*if ($tipo == 'avaliacao') {
			$txtSql = "SELECT u.med_id, u.med_nome, u.med_crm FROM cp_user_medico u
						LEFT OUTER JOIN cp_medico_has_avaliacao a ON a.med_id = u.med_id
						WHERE a.med_id IS NULL AND u.estab_id = 1";
		} elseif ($tipo == 'crescimento') {
			$txtSql = "SELECT u.med_id, u.med_nome, u.med_crm FROM cp_user_medico u
						LEFT OUTER JOIN cp_medico_crescimento c ON c.med_id = u.med_id
						WHERE c.med_id IS NULL AND u.estab_id = 1";
		} elseif ($tipo == 'treinamento') {
			$txtSql = "SELECT u.med_id, u.med_nome, u.med_crm FROM cp_user_medico u
						LEFT OUTER JOIN cp_user_medico_has_cp_treinamentos t ON t.med_id = u.med_id
						WHERE t.med_id IS NULL AND u.estab_id = 1";
		}*/

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}

		$arrObjeto = array();
		$resultado = $sql->fetchAll();
		$sql->closeCursor();

		if (count($resultado) > 0) {
			foreach ($resultado as $res) {
				$arrObjeto[] = array(
					'id' => $res['med_id'],
					'crm' => $res['med_crm'],
					'nome' => $res['med_nome']
				);
			}
		}

		return $arrObjeto;
	}

	public function relatorioGeral()
	{
		$txtSql = "SELECT
						cp_user_medico.*, cp_user_sistema.usu_cpf
					FROM
						cp_user_medico
					INNER JOIN
						cp_user_sistema_has_cp_user_medico ON cp_user_sistema_has_cp_user_medico.med_id = cp_user_medico.med_id
					INNER JOIN
						cp_user_sistema ON cp_user_sistema.usu_id = cp_user_sistema_has_cp_user_medico.usu_id
					WHERE
						cp_user_medico.estab_id = 1
					ORDER BY
						cp_user_medico.med_nome ASC";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}

		$arrObjeto = array();
		$resultado = $sql->fetchAll();
		$sql->closeCursor();

		$qtdAvaliacoesAno = UsuarioMedico::qtdAvaliacoesAno(date('Y'));
		$arrObjeto['qtdAvaliacoes'] = $qtdAvaliacoesAno;

		if (count($resultado) > 0) {
			foreach ($resultado as $res) {
				$ranking = null;
				$objTit = UsuarioMedicoTitulos::buscar($res['med_id'], "mt.med_id");

				$arrAvaliacao = array();
				$arrCrescimento = array();

				for ($x = 2010; $x <= date('Y'); $x++) {
					$avaliacao = self::medicoChecaAno("avaliacao", $res['med_id'], $x);

					if ($avaliacao) {
						array_push($arrAvaliacao, $x);
					}

					$crescimento = self::medicoChecaAno("crescimento", $res['med_id'], $x);

					if ($crescimento) {
						array_push($arrCrescimento, $x);
					}
				}

				$newArrayAvaliacao = self::medicoUltimaAvaliacao($res['med_id']);

				$newArrayAvaliacaoAno = self::medicoUltimaAvaliacaoAno($res['med_id'], date('Y'));

				$where   = "med_id = :med_id";
				$param   = array();
				$param[] = array("referencia" => ":med_id", "valor" => $res['med_id'], "tipo" => "INT");

				$listMedAva = MedicoAvaliacoes::listar($where, $param, "ma.ma_data DESC");

				if (count($listMedAva) > 0) {
					$objMedAva = MedicoAvaliacoes::buscar($listMedAva[0]->getId());

					if (count($objMedAva) > 0 && count($objMedAva->getAva_id()) > 0) {
						$idAva = @$objMedAva->getAva_id()->getId();

						if ($idAva > 0) {
							$ranking = MedicoAvaliacoes::posicaoRanking($idAva, $res['med_id']);
						}
					}
				}


				$arrObjeto['items'][] = array(
					'id'                   => $res['med_id'],
					'nome'                 => $res['med_nome'],
					'crm_nascimento'       => $res['med_nascimento'],
					'crm_nomegestor'       => $res['med_nomegestor'],
					'crm_cursoselegiveis'  => $res['med_cursoselegiveis'],
					'cpf'                  => $res['usu_cpf'],
					'situacao'             => $res['med_situacao'],
					'especialidade'        => $res['med_especialidade'],
					'concessao'            => $res['med_concessao'],
					'plantonista'          => $res['med_funcionario'],
					'classificacao'         => $res['med_classificacao'],
					'matricula'            => $res['med_num_matricula'],
					'estabelecimento'      => $res['estab_id'],
					'celular'              => $res['med_celular_ddd'] . " " . $res['med_celular'],
					'datacriacao'          => $res['med_datacriacao'],
					'email'                => $res['med_email'],
					'cartao_estac'         => $res['med_cartao_estac'],
					'cartao_estac_num'     => $res['med_cartao_estac_num'],
					'crm'                  => $res['med_crm'],
					'crm_uf'               => $res['med_crm_uf'],
					'imagem'               => $res['med_imagem'],
					'crm_validade'         => $res['med_crm_validade'],

					'crm_file'             => $res['med_crm_file'],
					'cred_file'            => $res['med_cred_file'],
					'integracao'           => $res['med_integracao'],
					'obs_integracao'       => $res['med_obs_integracao'],
					'area_atuacao'         => $res['med_area_atuacao'],
					'data_bata'            => $res['med_data_bata'],
					'tamanho_bata'         => $res['med_tamanho_bata'],
					'titulos'              => $objTit,
					'crescimento'          => $arrCrescimento,
					'avaliacao'            => $arrAvaliacao,
					'newArrayAvaliacao'    => $newArrayAvaliacao,
					'newArrayAvaliacaoAno' => $newArrayAvaliacaoAno,
					'ranking'              => $ranking,
					'equipe'               => $res['med_cartao_estac_obs']
				);
			}
		}

		return $arrObjeto;
	}


	public function relatorioGeralEndereco()
	{

		$txtSql = "SELECT
						cp_user_medico.*, cp_user_sistema.usu_cpf
					FROM
						cp_user_medico
					INNER JOIN
						cp_user_sistema_has_cp_user_medico ON cp_user_sistema_has_cp_user_medico.med_id = cp_user_medico.med_id
					INNER JOIN
						cp_user_sistema ON cp_user_sistema.usu_id = cp_user_sistema_has_cp_user_medico.usu_id
					WHERE
						cp_user_medico.estab_id = 1
					ORDER BY
						cp_user_medico.med_nome ASC";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}

		$arrObjeto = array();
		$resultado = $sql->fetchAll();
		$sql->closeCursor();

		if (count($resultado) > 0) {
			foreach ($resultado as $res) {
				
				$arrObjeto['items'][] = array(
					'id'                   => $res['med_id'],
					'nome'                 => $res['med_nome'],
					'crm'                  => $res['med_crm'],
					'cep' 				   => $res['med_cep'],
					'endereco'			   => $res['med_endereco'],
					'numero'			   => $res['med_numero'],
					'complemento'		   => $res['med_complemento'],
					'bairro'			   => $res['med_bairro'],
					'cidade'			   => $res['med_cidade'],
					'estado'			   => $res['med_estado'],
					'codigo_wpd'		   => $res['med_tamanho_bata'],	
				);
			}
		}

		return $arrObjeto;
	}

	public function medicoChecaAno($tipo = "", $idMedico = 0, $ano = 0)
	{
		if ($tipo == 'avaliacao') {
			$txtSql = "SELECT med_id FROM cp_medico_has_avaliacao WHERE med_id = :medico AND DATE_FORMAT(ma_dtenvio, '%Y') = :ano";
		} elseif ($tipo == 'crescimento') {
			$txtSql = "SELECT med_id FROM cp_medico_crescimento WHERE med_id = :medico AND DATE_FORMAT(datacriacao, '%Y') = :ano";
		} elseif ($tipo == 'treinamento') {
			$txtSql = "SELECT med_id FROM cp_user_medico_has_cp_treinamentos WHERE med_id = :medico AND DATE_FORMAT(mt_data, '%Y') = :ano";
		}

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':medico', $idMedico, PDO::PARAM_INT);
			$sql->bindValue(':ano', $ano, PDO::PARAM_STR);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}

		$arrObjeto = array();
		$resultado = $sql->fetchColumn();
		$sql->closeCursor();

		return $resultado ? true: false;
	}

	public function medicoUltimaAvaliacao($idMedico = 0)
	{
		$txtSql = "SELECT
						med_id,
						ava_nome,
						ma_media_tecnica,
						ma_media_comport,
						ma_media_institu,
						ma_media_paciente,
						ma_media_producao,
						ma_media_geral,
						YEAR(ma_dtenvio) as ano
					FROM cp_medico_has_avaliacao
					WHERE med_id = :medico AND ma_media_tecnica IS NOT NULL AND ma_media_comport IS NOT NULL AND ma_dtenvio IS NOT NULL
					ORDER BY YEAR(ma_dtenvio)
					DESC LIMIT 1";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':medico', $idMedico, PDO::PARAM_INT);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}

		$arrObj = null;
		$resultado = $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();

		if ($resultado) {
			$arrObj = array(
				'med_id' => $resultado['med_id'],
				'ava_nome' => $resultado['ava_nome'],
				'ma_media_tecnica' => $resultado['ma_media_tecnica'],
				'ma_media_comport' => $resultado['ma_media_comport'],
				'ma_media_institu' => $resultado['ma_media_institu'],
				'ma_media_paciente' => $resultado['ma_media_paciente'],
				'ma_media_producao' => $resultado['ma_media_producao'],
				'media' => $resultado['ma_media_geral'],
				'ano' => $resultado['ano'],
			);
		}

		return $arrObj;
	}

	public function medicoUltimaAvaliacaoAno($idMedico = 0, $ano = 0)
	{
		$txtSql = "SELECT
						med_id,
						ava_nome,
						ma_media_tecnica,
						ma_media_comport,
						ma_media_institu,
						ma_media_paciente,
						ma_media_producao,
						ma_media_geral,
						YEAR(ma_dtenvio) as ano
					FROM cp_medico_has_avaliacao
					WHERE
						med_id = :medico AND
						ma_media_tecnica IS NOT NULL AND ma_media_comport IS NOT NULL AND
						YEAR(ma_dtenvio) = :ano";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':medico', $idMedico, PDO::PARAM_INT);
			$sql->bindValue(':ano', $ano, PDO::PARAM_INT);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}

		$arrObj = null;
		$resultado = $sql->fetchAll();
		$sql->closeCursor();

		if (count($resultado) > 0) {
			foreach($resultado as $result) {
				$arrObj[] = array(
					'med_id' => $result['med_id'],
					'ava_nome' => $result['ava_nome'],
					'ma_media_tecnica' => $result['ma_media_tecnica'],
					'ma_media_comport' => $result['ma_media_comport'],
					'ma_media_institu' => $result['ma_media_institu'],
					'ma_media_paciente' => $result['ma_media_paciente'],
					'ma_media_producao' => $result['ma_media_producao'],
					'media' => $result['ma_media_geral'],
					'ano' => $result['ano'],
				);
			}
		}

		return $arrObj;
	}

	public function qtdAvaliacoesAno($ano = 0)
	{
		$txtSql = "SELECT COUNT(med_id) as quantidade
					FROM cp_medico_has_avaliacao
					WHERE
						ma_media_tecnica IS NOT NULL AND ma_media_comport IS NOT NULL AND
						YEAR(ma_dtenvio) = :ano
					GROUP BY med_id
					ORDER BY quantidade DESC
					LIMIT 1";

		try	{
			$sql = $this->conexao->getConexao()->prepare($txtSql);
			$sql->bindValue(':ano', $ano, PDO::PARAM_INT);
			$sql->execute();
		} catch(PDOException $ex) {
			throw new BancoExcecao($ex->getMessage(), $txtSql, __FILE__, __CLASS__, __METHOD__, __LINE__);
		}

		$result	= $sql->fetch(PDO::FETCH_ASSOC);
		$sql->closeCursor();

		return $result['quantidade'];
	}
}
