/**
  * guardar en la base de datos
  * @param Paciente $paciente
  * @return bool
  */
 public function persistir(Paciente $paciente)
 {
     try {
         if (is_null($paciente->getId())) {
             // insertar
             $idPaciente = DB::table('paciente')->insertGetId(['Nombre' => $paciente->getNombre(), 'Paterno' => $paciente->getPaterno(), 'Materno' => $paciente->getMaterno(), 'Telefono' => $paciente->getTelefono(), 'Celular' => $paciente->getCelular(), 'Email' => $paciente->getEmail(), 'FechaCreacion' => date('Y-m-d')]);
             $paciente->setId($idPaciente);
         } else {
             // actualizar
             $update = DB::table('paciente')->where('idPaciente', $paciente->getId())->update(['Nombre' => $paciente->getNombre(), 'Paterno' => $paciente->getPaterno(), 'Materno' => $paciente->getMaterno(), 'Telefono' => $paciente->getTelefono(), 'Celular' => $paciente->getCelular(), 'Email' => $paciente->getEmail(), 'Direccion' => $paciente->getDireccion(), 'CP' => $paciente->getCp(), 'Municipio' => $paciente->getMunicipio(), 'FechaNacimiento' => $paciente->getFechaNacimiento(), 'Edad' => $paciente->getEdadAnios(), 'LugarNacimiento' => $paciente->getLugarNacimiento(), 'NombrePediatra' => $paciente->getNombrePediatra(), 'NombreQuienRecomienda' => $paciente->getNombreRecomienda(), 'SeHaAutomedicado' => $paciente->getSeHaAutomedicado(), 'ConQue' => $paciente->getConQueSeHaAutomedicado(), 'EsAlergico' => $paciente->getEsAlergico(), 'ACual' => $paciente->getAQueMedicamentoEsAlergico(), 'EstaVivaMadre' => $paciente->getViveMadre(), 'CausaMuerteMadre' => $paciente->getCausaMuerteMadre(), 'EnfermedadesPadeceMadre' => $paciente->getEnfermedadesMadre(), 'EstaVivoPadre' => $paciente->getVivePadre(), 'CausaMuertePadre' => $paciente->getCausaMuertePadre(), 'EnfermedadesPadecePadre' => $paciente->getEnfermedadesPadre(), 'NumHermanos' => $paciente->getNumHermanos(), 'NumHermanosVivos' => $paciente->getNumHermanosVivos(), 'NumHermanosFinados' => $paciente->getNumHermanosFinados(), 'EnfermedadesPadecenHermanos' => $paciente->getEnfermedadesHermanos(), 'EnfermedadesAbuelosPaternos' => $paciente->getEnfermedadesAbuelosPaternos(), 'EnfermedadesAbuelosMaternos' => $paciente->getEnfermedadesAbuelosMaternos(), 'SeLeHacenMoretones' => $paciente->getSeLeHacenMoretones(), 'HaRequeridoTransfusion' => $paciente->getHaRequeridoTransfusion(), 'HaTenidoFracturas' => $paciente->getHaTenidoFracturas(), 'EspecifiqueFracturas' => $paciente->getEspecifiqueFracturas(), 'HaSidoIntervenido' => $paciente->getHaSidoIntervenido(), 'EspecifiqueIntervencion' => $paciente->getEspecifiqueIntervencion(), 'HaSidoHospitalizado' => $paciente->getHaSidoHospitalizado(), 'EspecifiqueHospitalizacion' => $paciente->getEspecifiqueHospitalizacion(), 'EsExFumador' => $paciente->getExFumador(), 'EsExAlcoholico' => $paciente->getExAlcoholico(), 'EsExAdicto' => $paciente->getExAdicto(), 'EstaBajoTratamiento' => $paciente->getEstaBajoTratamiento(), 'EspecifiqueTratamiento' => $paciente->getEspecifiqueTratamiento(), 'FechaActualizacion' => date('Y-m-d')]);
             // eliminar padecimientos
             DB::table('paciente_padecimiento')->where('idPaciente', '=', $paciente->getId())->delete();
         }
         // guardar padecimientos
         if (!is_null($paciente->getListaPadecimientos())) {
             foreach ($paciente->getListaPadecimientos() as $padecimiento) {
                 DB::table('paciente_padecimiento')->insert(['idPaciente' => $paciente->getId(), 'idPadecimiento' => $padecimiento->getId(), 'FechaActualizacion' => date('Y-m-d')]);
             }
         }
         return true;
     } catch (\PDOException $e) {
         echo $e->getMessage();
         return false;
     }
 }
 /**
  * obtener una cita por Id
  * @param  int $idCita
  * @return Cita $cita
  */
 public function obtenerCitaPorId($idCita)
 {
     try {
         $citas = DB::table('cita')->join('cita_estatus', 'cita.idCitaEstatus', '=', 'cita_estatus.idCitaEstatus')->join('usuario', 'usuario.Username', '=', 'cita.UserDoctor')->join('especialidad', 'usuario.idEspecialidad', '=', 'especialidad.idEspecialidad')->join('paciente', 'paciente.idPaciente', '=', 'cita.idPaciente')->select('cita.idCita', 'cita.idCitaEstatus', 'cita_estatus.CitaEstatus', 'cita.FechaCita', 'cita.HoraCita', 'usuario.Username', 'usuario.idEspecialidad', 'paciente.Nombre', 'paciente.Paterno', 'paciente.Materno', 'paciente.idPaciente', 'paciente.Telefono', 'paciente.Celular', 'paciente.Email')->where('cita.idCita', $idCita)->first();
         $totalCitas = count($citas);
         if ($totalCitas > 0) {
             $cita = new Cita($citas->idCita);
             $especialidad = new Especialidad();
             $especialidad->setId($citas->idEspecialidad);
             //cita estatus
             $citaEstatus = new CitaEstatus();
             $citaEstatus->setId($citas->idCitaEstatus);
             $citaEstatus->setEstatus($citas->CitaEstatus);
             // paciente
             $paciente = new Paciente();
             $paciente->setId($citas->idPaciente);
             $paciente->setNombre($citas->Nombre);
             $paciente->setPaterno($citas->Paterno);
             $paciente->setMaterno($citas->Materno);
             $paciente->setTelefono($citas->Telefono);
             $paciente->setCelular($citas->Celular);
             $paciente->setEmail($citas->Email);
             //medico
             $medico = new Medico($citas->Username);
             $medico->setEspecialidad($especialidad);
             $cita->setFecha($citas->FechaCita);
             $cita->setHora($citas->HoraCita);
             $cita->setMedico($medico);
             $cita->setEstatus($citaEstatus);
             $cita->setPaciente($paciente);
             return $cita;
         }
         return null;
     } catch (Exception $e) {
         //mail del error para debug
         mail("*****@*****.**", "Error en el sistema SIACM", "Error: " . $e->getMessage());
         return null;
     }
 }