示例#1
0
 /**
  * generar lista citas PDF
  * @param $medico
  * @param $fecha
  */
 public function pdf($medico, $fecha)
 {
     $medico = base64_decode($medico);
     $fecha = base64_decode($fecha);
     $listaCitas = $this->citasRepositorio->obtenerCitasPorMedico($medico, $fecha);
     $reporte = new ListaCitasPdf($listaCitas, $fecha);
     $reporte->SetHeaderMargin(10);
     $reporte->SetAutoPageBreak(true);
     $reporte->SetMargins(15, 25);
     $reporte->generar();
 }
 /**
  * guardar consulta
  * @param Request $request
  * @param ConsultasRepositorioInterface $consultasRepositorio
  * @param CitasRepositorioInterface $citasRepositorio
  * @param PlanTratamientoRepositorioInterface $planRepositorio
  * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  */
 public function guardar(Request $request, ConsultasRepositorioInterface $consultasRepositorio, CitasRepositorioInterface $citasRepositorio, PlanTratamientoRepositorioInterface $planRepositorio)
 {
     // variable de respuesta
     $respuesta = '';
     // parámetros de consulta
     $idPaciente = (int) base64_decode($request->get('idPaciente'));
     $userMedico = base64_decode($request->get('userMedico'));
     $idCita = (int) base64_decode($request->get('idCita'));
     $generoPlan = $request->get('generoPlan') === '0' ? false : true;
     $tipoAnestesia = !is_null($request->get('tipoCostoConsulta')) ? true : false;
     $padecimientoActual = $request->get('txtPadecimiento');
     $interrogatorioAparatosSistemas = $request->get('txtInterrogatorio');
     $peso = $request->get('txtPeso');
     $talla = $request->get('txtTalla');
     $pulso = $request->get('txtPulso');
     $temperatura = $request->get('txtTemperatura');
     $tensionArterial = $request->get('txtTension');
     $notaMedica = $request->get('txtNota');
     $comportamientoFrankl = $request->get('comportamientoFrankl');
     $costoConsulta = $request->get('costoAsignadoConsulta');
     $exploracion = new ExploracionFisica($peso, $talla, $pulso, $temperatura, $tensionArterial);
     $comportamiento = new ComportamientoFrankl($comportamientoFrankl);
     $consulta = new Consulta(0, $padecimientoActual, $interrogatorioAparatosSistemas, $exploracion, $notaMedica, $comportamiento, $costoConsulta);
     // expediente
     $medico = $this->usuariosRepositorio->obtenerUsuarioPorUsername($userMedico);
     $pacientesRepositorio = PacientesRepositorioFactory::crear($medico);
     $paciente = $pacientesRepositorio->obtenerPacientePorId($idPaciente);
     $expediente = $this->expedientesRepositorio->obtenerExpedientePorPacienteMedico($paciente, $medico);
     // cambiar el estatus de la cita a atendida
     $cita = $citasRepositorio->obtenerCitaPorId($idCita);
     $cita->setEstatus(new CitaEstatus(4));
     if (!$citasRepositorio->actualizaEstatus($cita)) {
         return response(0);
     }
     // verificar los elementos generados durante la consulta (odontograma, plan) y agregarlos al expediente del paciente x
     if (is_null($expediente->obtenerPlanActivo())) {
         if ($generoPlan) {
             $consultasElementosServicio = new ConsultasElementosServicio($this->expedientesRepositorio);
             if (!$consultasElementosServicio->verificarElementosCreadosEnConsulta($request, $expediente)) {
                 return response(0);
             }
         }
     }
     // verificar si hay interconsulta
     if ($request->session()->has('interconsulta')) {
         $interconsulta = $request->session()->get('interconsulta');
         $expediente->agregarInterconsulta($interconsulta);
         $this->expedientesRepositorio->guardarInterconsulta($expediente);
     }
     // verificar si hay receta
     if ($request->session()->has('receta')) {
         $receta = $request->session()->get('receta');
         $consulta->setReceta($receta);
     }
     // verificar si es primera vez o subsecuente el expediente para completar la información
     if ($expediente->primeraVez()) {
         $pacientesRepositorio = PacientesRepositorioFactory::crear($expediente->getMedico());
         $pacientesComplemento = PacientesComplementoFactory::crear($expediente->getMedico(), $pacientesRepositorio);
         if (!$pacientesComplemento->crearDeHttp($request, $expediente->getPaciente())) {
             return response(0);
         }
     }
     $consulta->setExpediente($expediente);
     // persistir consulta
     if (!$consultasRepositorio->persistir($consulta)) {
         return response(0);
     }
     if ($tipoAnestesia === true) {
         if (!is_null($plan = $expediente->obtenerPlanActivo())) {
             $plan->atender();
             if (!$planRepositorio->actualizarAtencionTratamiento($plan)) {
                 return response(0);
             }
         }
     }
     // dientes atendidos - plan atendido
     if (!is_null($request->get('dienteAtendido'))) {
         $plan = $expediente->obtenerPlanActivo();
         foreach ($request->get('dienteAtendido') as $dienteNumero) {
             $plan->diente((int) $dienteNumero)->atenderTratamientos();
         }
         if (!$planRepositorio->actualizarAtencionTratamiento($plan)) {
             return response(0);
         }
     }
     // devolver elementos
     $respuesta['respuesta'] = 1;
     // id Plan
     $respuesta['expediente'] = $expediente->getId();
     return response()->json($respuesta);
 }
 /**
  * firmar
  * @param \Illuminate\Http\Request                                $request
  * @param \Siacme\Infraestructura\Citas\CitasRepositorioInterface $citasRepositorio
  * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response
  */
 public function firmar(Request $request, CitasRepositorioInterface $citasRepositorio)
 {
     $idPaciente = (int) base64_decode($request->get('idPaciente'));
     $userMedico = base64_decode($request->get('userMedico'));
     $medico = $this->usuariosRepositorio->obtenerUsuarioPorUsername($userMedico);
     $pacientesRepositorio = PacientesRepositorioFactory::crear($medico);
     $paciente = $pacientesRepositorio->obtenerPacientePorId($idPaciente);
     $expediente = $this->expedientesRepositorio->obtenerExpedientePorPacienteMedico($paciente, $medico);
     $expediente->setFirma(rand());
     if (!$this->expedientesRepositorio->persistir($expediente)) {
         return response(0);
     }
     // cambiar estatus a 3 = en espera
     $cita = $citasRepositorio->obtenerCitaPorPacienteMedico($paciente, $medico);
     $cita->setEstatus(new CitaEstatus(3));
     if (!$citasRepositorio->actualizaEstatus($cita)) {
         return response(0);
     }
     return response(1);
 }