/** * @param \Siacme\Dominio\Pacientes\Paciente $paciente * @param \Siacme\Dominio\Usuarios\Usuario $medico * @return array */ public function obtenerExpedientePorPacienteMedico(Paciente $paciente, Usuario $medico) { try { $expedientes = DB::table('expediente')->where('idPaciente', $paciente->getId())->where('UserMedico', $medico->getUsername())->first(); $totalExpedientes = count($expedientes); if ($totalExpedientes > 0) { $expediente = new Expediente($expedientes->idExpediente); $expediente->setPaciente($paciente); $expediente->setMedico($medico); $expediente->setPrimeraVez($expedientes->PrimeraVez); $expediente->setFirma($expedientes->Firma); // buscar las interconsultas del expediente $interconsultas = DB::table('interconsulta')->join('medico_referencia', 'medico_referencia.idMedicoReferencia', '=', 'interconsulta.idMedicoReferencia')->join('especialidad', 'especialidad.idEspecialidad', '=', 'medico_referencia.idEspecialidad')->where('interconsulta.idExpediente', $expediente->getId())->orderBy('interconsulta.idInterconsulta', 'desc')->limit(50)->get(); if (count($interconsultas) > 0) { foreach ($interconsultas as $interconsultas) { $interconsulta = new Interconsulta($interconsultas->idInterconsulta, new MedicoReferencia($interconsultas->idMedicoReferencia, $interconsultas->Direccion, new Especialidad($interconsultas->idEspecialidad, $interconsultas->Especialidad)), $interconsultas->Referencia); $interconsulta->getMedico()->setNombre($interconsultas->Nombre); $interconsulta->getMedico()->setPaterno($interconsultas->Paterno); $interconsulta->getMedico()->setMaterno($interconsultas->Materno); $expediente->agregarInterconsulta($interconsulta); } } //=============================================================================== // buscar las consultas del expediente $consultas = DB::table('consulta')->join('comportamiento_frankl', 'consulta.idComportamientoFrankl', '=', 'comportamiento_frankl.idComportamientoFrankl')->leftJoin('receta', 'receta.idReceta', '=', 'consulta.idReceta')->where('consulta.idExpediente', $expediente->getId())->orderBy('consulta.idConsulta', 'desc')->limit(50)->get(); if (count($consultas) > 0) { foreach ($consultas as $consultas) { $consulta = new Consulta($consultas->idConsulta, $consultas->PadecimientoActual, $consultas->Interrogatorio, new ExploracionFisica($consultas->Peso, $consultas->Talla, $consultas->Pulso, $consultas->Temperatura, $consultas->TensionArterial), $consultas->Nota, new ComportamientoFrankl($consultas->idComportamientoFrankl), $consultas->Costo, $consultas->Fecha); if (!is_null($consultas->idReceta)) { $consulta->setReceta(new Receta($consultas->idReceta, $consultas->Receta)); } $expediente->agregarConsulta($consulta); } } //=============================================================================== // buscar los planes de tratamiento $planes = DB::table('plan_tratamiento')->where('idExpediente', $expediente->getId())->orderBy('idPlanTratamiento', 'desc')->limit(50)->get(); if (count($planes) > 0) { // buscar la lista de dientes $dientes = DB::table('diente')->orderBy('Numero')->get(); foreach ($planes as $planes) { $plan = new PlanTratamiento(!$planes->Activo); $listaDientes = new Collection(); $plan->setId($planes->idPlanTratamiento); foreach ($dientes as $dientes) { $dienteActual = new Diente($dientes->Numero); // padecimientos dentales $dientesPadecimientos = DB::table('diente_diente_padecimiento')->join('diente_padecimiento', 'diente_padecimiento.idDientePadecimiento', '=', 'diente_diente_padecimiento.idDientePadecimiento')->where('diente_diente_padecimiento.idPlanTratamiento', $planes->idPlanTratamiento)->where('diente_diente_padecimiento.Numero', $dientes->Numero)->get(); foreach ($dientesPadecimientos as $dientesPadecimientos) { $padecimiento = new DientePadecimiento($dientesPadecimientos->idDientePadecimiento, $dientesPadecimientos->DientePadecimiento, $dientesPadecimientos->RutaImagen); $dienteActual->agregarPadecimiento($padecimiento); } //=============================================================================== // tratamientos dentales $dientesTratamientos = DB::table('diente_diente_tratamiento')->leftJoin('diente_tratamiento', 'diente_tratamiento.idDienteTratamiento', '=', 'diente_diente_tratamiento.idDienteTratamiento')->where('diente_diente_tratamiento.idPlanTratamiento', $planes->idPlanTratamiento)->where('diente_diente_tratamiento.Numero', $dientes->Numero)->get(); if (count($dientesTratamientos) > 0) { $index = 1; foreach ($dientesTratamientos as $dientesTratamientos) { $tratamiento = new DientePlan(new DienteTratamiento((int) $dientesTratamientos->idDienteTratamiento, $dientesTratamientos->DienteTratamiento, $dientesTratamientos->Costo), $dientesTratamientos->Atendido === 1 ? true : false); $dienteActual->agregarTratamiento((string) $index, $tratamiento); $index++; } } else { } //if($dientes->Numero === 18) { dd($dienteActual); } $listaDientes->push($dienteActual); } // otros tratamientos $otrosTratamientos = DB::table('plan_tratamiento_otros')->join('plan_otro_tratamiento', 'plan_otro_tratamiento.idOtroTratamiento', '=', 'plan_tratamiento_otros.idOtroTratamiento')->where('plan_tratamiento_otros.idPlanTratamiento', $plan->getId())->get(); if (count($otrosTratamientos) > 0) { foreach ($otrosTratamientos as $otrosTratamientos) { $otroTratamiento = new OtroTratamiento($otrosTratamientos->idOtroTratamiento, $otrosTratamientos->OtroTratamiento, $otrosTratamientos->Costo); $plan->agregarOtroTratamiento($otroTratamiento->getId(), $otroTratamiento); } } $plan->setCosto($planes->Costo); $plan->setListaDientes($listaDientes); $expediente->agregarPlanTratamiento($plan); } } // tratamientos ortopedia ortodoncia $otrosTratamientos = DB::table('tratamiento_ortopedia_ortodoncia')->where('idExpediente', $expediente->getId())->get(); if (count($otrosTratamientos) > 0) { foreach ($otrosTratamientos as $otroTratamiento) { $tratamientoOdontologia = new TratamientoOdontologia($otroTratamiento->id, $otroTratamiento->Dx, $otroTratamiento->Costo, $otroTratamiento->Duracion, $otroTratamiento->Mensualidades); // obtener el detalle de tratamientos $otrosTratamientosDetalle = DB::table('tratamiento_ortopedia_ortodoncia_detalle')->where('id', $tratamientoOdontologia->getId())->get(); if (count($otrosTratamientosDetalle) > 0) { foreach ($otrosTratamientosDetalle as $otroTratamientoDetalle) { $tratamientoOdontologiaTipo = new TratamientoOdontologiaTipo($otroTratamientoDetalle->Tipo); $tratamientoOdontologia->getListaTratamientos()->push($tratamientoOdontologiaTipo); } } $expediente->agregarTratamientoOdontologia($tratamientoOdontologia); } } return $expediente; } return null; } catch (\PDOException $e) { return null; } }
/** * generar vista para el plan de tratamiento * @param Request $request * @param string $userMed * @param string $idPaciente * @param DienteTratamientosRepositorioInterface $dienteTratamientosRepositorio * @param OtrosTratamientosRepositorioInterface $otrosTratamientosRepositorio * @return \Illuminate\View\View */ public function verPlan(Request $request, $userMed, $idPaciente, DienteTratamientosRepositorioInterface $dienteTratamientosRepositorio, OtrosTratamientosRepositorioInterface $otrosTratamientosRepositorio) { $odontograma = $request->session()->get('odontograma'); if (is_null($request->session()->get('plan'))) { $odontograma->borrarDientesTratamientos(); // obtener primeros dos otros tratamientos para el plan $otroTratamiento1 = $otrosTratamientosRepositorio->obtenerOtroTratamientoPorId(1); $otroTratamiento2 = $otrosTratamientosRepositorio->obtenerOtroTratamientoPorId(2); // obtener plan $plan = new PlanTratamiento(); $plan->agregarOtroTratamiento($otroTratamiento1->getId(), $otroTratamiento1); $plan->agregarOtroTratamiento($otroTratamiento2->getId(), $otroTratamiento2); $plan->generarDeOdontograma($odontograma); } else { $plan = $request->session()->get('plan'); } $listaDienteTratamientos = $dienteTratamientosRepositorio->obtenerDienteTratamientos(); $listaOtrosTratamientos = $otrosTratamientosRepositorio->obtenerOtrosTratamientos(); $dibujadorPlan = new DibujadorPlanTratamiento($plan, $listaDienteTratamientos); $request->session()->put('plan', $plan); return View::make('consultas.consultas_plan_tratamiento', compact('dibujadorPlan', 'listaOtrosTratamientos', 'userMed', 'idPaciente')); }
/** * obtener un plan por su id * @param $id * @return PlanTratamiento */ public function obtenerPorId($id) { // TODO: Implement obtenerPorId() method. try { $planes = DB::table('plan_tratamiento')->where('idPlanTratamiento', $id)->first(); if (count($planes) > 0) { // buscar la lista de dientes $dientes = DB::table('diente')->orderBy('Numero')->get(); $plan = new PlanTratamiento(!$planes->Activo); $listaDientes = new Collection(); $plan->setId($planes->idPlanTratamiento); foreach ($dientes as $dientes) { $dienteActual = new Diente($dientes->Numero); // padecimientos dentales $dientesPadecimientos = DB::table('diente_diente_padecimiento')->join('diente_padecimiento', 'diente_padecimiento.idDientePadecimiento', '=', 'diente_diente_padecimiento.idDientePadecimiento')->where('diente_diente_padecimiento.idPlanTratamiento', $planes->idPlanTratamiento)->where('diente_diente_padecimiento.Numero', $dientes->Numero)->get(); foreach ($dientesPadecimientos as $dientesPadecimientos) { $padecimiento = new DientePadecimiento($dientesPadecimientos->idDientePadecimiento, $dientesPadecimientos->DientePadecimiento, $dientesPadecimientos->RutaImagen); $dienteActual->agregarPadecimiento($padecimiento); } //=============================================================================== // tratamientos dentales $dientesTratamientos = DB::table('diente_diente_tratamiento')->leftJoin('diente_tratamiento', 'diente_tratamiento.idDienteTratamiento', '=', 'diente_diente_tratamiento.idDienteTratamiento')->where('diente_diente_tratamiento.idPlanTratamiento', $planes->idPlanTratamiento)->where('diente_diente_tratamiento.Numero', $dientes->Numero)->get(); if (count($dientesTratamientos) > 0) { $index = 1; foreach ($dientesTratamientos as $dientesTratamientos) { $tratamiento = new DientePlan(new DienteTratamiento((int) $dientesTratamientos->idDienteTratamiento, $dientesTratamientos->DienteTratamiento, $dientesTratamientos->Costo), $dientesTratamientos->Atendido === 1 ? true : false); $dienteActual->agregarTratamiento((string) $index, $tratamiento); $index++; } } else { } //if($dientes->Numero === 18) { dd($dienteActual); } $listaDientes->push($dienteActual); } // otros tratamientos $otrosTratamientos = DB::table('plan_tratamiento_otros')->join('plan_otro_tratamiento', 'plan_otro_tratamiento.idOtroTratamiento', '=', 'plan_tratamiento_otros.idOtroTratamiento')->where('plan_tratamiento_otros.idPlanTratamiento', $plan->getId())->get(); if (count($otrosTratamientos) > 0) { foreach ($otrosTratamientos as $otrosTratamientos) { $otroTratamiento = new OtroTratamiento($otrosTratamientos->idOtroTratamiento, $otrosTratamientos->OtroTratamiento, $otrosTratamientos->Costo); $plan->agregarOtroTratamiento($otroTratamiento->getId(), $otroTratamiento); } } $plan->setCosto($planes->Costo); $plan->setListaDientes($listaDientes); return $plan; } } catch (\PDOException $e) { echo $e->getMessage(); return null; } }