Esempio n. 1
0
 /**
  * @param Request                         $request
  * @param ExpedientesRepositorioInterface $expedientesRepositorio
  * @return \Illuminate\Http\JsonResponse
  */
 public function estatus(Request $request, ExpedientesRepositorioInterface $expedientesRepositorio)
 {
     // obtener parametros
     $respuesta = array();
     $idCita = (int) base64_decode($request->get('idCita'));
     $idEstatus = $request->get('idEstatus');
     $cita = $this->citasRepositorio->obtenerCitaPorId($idCita);
     $cita->setEstatus(new CitaEstatus((int) $idEstatus));
     if (!$this->citasRepositorio->actualizaEstatus($cita)) {
         // error
         $respuesta['respuesta'] = 0;
         return response()->json($respuesta);
     }
     // obtener el expediente
     $expediente = $expedientesRepositorio->obtenerExpedientePorPacienteMedico($cita->getPaciente(), $cita->getMedico());
     // exito
     $respuesta['respuesta'] = 1;
     // view a cargar
     $html = view('citas.citas_detalle_opciones_refrescar', compact('cita', 'expediente'));
     $respuesta['html'] = base64_encode($html);
     return response()->json($respuesta);
 }
Esempio n. 2
0
 /**
  * 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);
 }