/** * 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; } }
/** * actualizar datos faltantes * @param Paciente $paciente * @return bool */ public function completarDatos(Paciente $paciente) { try { $operacion = DB::table('paciente_johanna')->where('idPaciente', $paciente->getId())->update(['Labios' => $paciente->getLabios(), 'Carrillos' => $paciente->getCarrillos(), 'Frenillos' => $paciente->getFrenillos(), 'Paladar' => $paciente->getPaladar(), 'Lengua' => $paciente->getLengua(), 'PisoDeBoca' => $paciente->getPisoDeBoca(), 'Parodonto' => $paciente->getParodonto(), 'Uvula' => $paciente->getUvula(), 'Amigdalas' => $paciente->getAmigdalas(), 'MordidaBordeBorde' => $paciente->getMordidaBordeBorde() ? 1 : 0, 'MedidaMordidaBordeBorde' => $paciente->getMedidaBordeBorde(), 'SobremordidaVertical' => $paciente->getSobremordidaVertical() ? 1 : 0, 'MedidaSobremordidaVertical' => $paciente->getMedidaSobremordidaVertical(), 'SobremordidaHorizontal' => $paciente->getSobremordidaHorizontal() ? 1 : 0, 'MedidaSobremordidaHorizontal' => $paciente->getMedidaSobremordidaHorizontal(), 'MordidaAbiertaAnterior' => $paciente->getMordidaAbiertaAnterior() ? 1 : 0, 'MedidaMordidaAbiertaAnterior' => $paciente->getMedidaMordidaAbiertaAnterior(), 'MordidaCruzadaAnterior' => $paciente->getMordidaCruzadaAnterior() ? 1 : 0, 'MedidaMordidaCruzadaAnterior' => $paciente->getMedidaMordidaCruzadaAnterior(), 'MordidaCruzadaPosterior' => $paciente->getMordidaCruzadaPosterior() ? 1 : 0, 'MedidaMordidaCruzadaPosterior' => $paciente->getMedidaMordidaCruzadaPosterior(), 'LineaMediaDental' => $paciente->getLineaMediaDental() ? 1 : 0, 'MedidaLineaMediaDental' => $paciente->getMedidaLineaMediaDental(), 'LineaMediaEsqueletica' => $paciente->getLineaMediaEsqueletica() ? 1 : 0, 'MedidaLineaMediaEsqueletica' => $paciente->getMedidaLineaMediaEsqueletica(), 'AlteracionesTamanio' => $paciente->getAlteracionesTamanio() ? 1 : 0, 'MedidaAlteracionesTamanio' => $paciente->getMedidaAlteracionesTamanio(), 'AlteracionesForma' => $paciente->getAlteracionesForma() ? 1 : 0, 'MedidaAlteracionesForma' => $paciente->getMedidaAlteracionesForma(), 'AlteracionesNumero' => $paciente->getAlteracionesNumero() ? 1 : 0, 'MedidaAlteracionesNumero' => $paciente->getMedidaAlteracionesNumero(), 'AlteracionesEstructura' => $paciente->getAlteracionesEstructura() ? 1 : 0, 'MedidaAlteracionesEstructura' => $paciente->getMedidaAlteracionesEstructura(), 'AlteracionesTextura' => $paciente->getAlteracionesTextura() ? 1 : 0, 'MedidaAlteracionesTextura' => $paciente->getMedidaAlteracionesTextura(), 'AlteracionesColor' => $paciente->getAlteracionesColor() ? 1 : 0, 'MedidaAlteracionesColor' => $paciente->getMedidaAlteracionesColor(), 'TipoArcoI' => $paciente->getTipoArcoI() ? 1 : 0, 'EscalonMesialDerecho' => $paciente->getEscalonMesialDerecho() ? 1 : 0, 'EscalonMesialIzquierdo' => $paciente->getEscalonMesialIzquierdo() ? 1 : 0, 'EscalonDistalDerecho' => $paciente->getEscalonDistalDerecho() ? 1 : 0, 'EscalonDistalIzquierdo' => $paciente->getEscalonDistalIzquierdo() ? 1 : 0, 'EscalonRectoDerecho' => $paciente->getEscalonRectoDerecho() ? 1 : 0, 'EscalonRectoIzquierdo' => $paciente->getEscalonRectoIzquierdo() ? 1 : 0, 'MesialExageradoDerecho' => $paciente->getMesialExageradoDerecho() ? 1 : 0, 'MesialExageradoIzquierdo' => $paciente->getMesialExageradoIzquierdo() ? 1 : 0, 'NoDeterminadoDerecho' => $paciente->getNoDeterminadoDerecho() ? 1 : 0, 'NoDeterminadoIzquierdo' => $paciente->getNoDeterminadoIzquierdo() ? 1 : 0, 'RelacionMolarDerechaI' => $paciente->getRelacionMolarDerechaI() ? 1 : 0, 'RelacionMolarDerechaII' => $paciente->getRelacionMolarDerechaII() ? 1 : 0, 'RelacionMolarDerechaIII' => $paciente->getRelacionMolarDerechaIII() ? 1 : 0, 'RelacionMolarIzquierdaI' => $paciente->getRelacionMolarIzquierdaI() ? 1 : 0, 'RelacionMolarIzquierdaII' => $paciente->getRelacionMolarIzquierdaII() ? 1 : 0, 'RelacionMolarIzquierdaIII' => $paciente->getRelacionMolarIzquierdaIII() ? 1 : 0, 'RelacionCaninaDerechaI' => $paciente->getRelacionCaninaDerechaI() ? 1 : 0, 'RelacionCaninaDerechaII' => $paciente->getRelacionCaninaDerechaII() ? 1 : 0, 'RelacionCaninaDerechaIII' => $paciente->getRelacionCaninaDerechaIII() ? 1 : 0, 'RelacionCaninaIzquierdaI' => $paciente->getRelacionCaninaIzquierdaI() ? 1 : 0, 'RelacionCaninaIzquierdaII' => $paciente->getRelacionCaninaIzquierdaII() ? 1 : 0, 'RelacionCaninaIzquierdaIII' => $paciente->getRelacionCaninaIzquierdaIII() ? 1 : 0, 'FechaActualizacion' => date('Y-m-d H:m:i')]); return true; } catch (\PDOException $e) { echo $e->getMessage(); return false; } }
/** * @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; } }
/** * @param \Siacme\Dominio\Pacientes\Paciente $paciente * @param \Siacme\Dominio\Usuarios\Usuario $medico * @return Cita */ public function obtenerCitaPorPacienteMedico(Paciente $paciente, Usuario $medico) { try { $citas = DB::table('cita')->join('cita_estatus', 'cita.idCitaEstatus', '=', 'cita_estatus.idCitaEstatus')->where('cita.idPaciente', $paciente->getId())->where('cita.UserDoctor', $medico->getUsername())->first(); $totalCitas = count($citas); if ($totalCitas > 0) { $cita = new Cita($citas->idCita); //cita estatus $citaEstatus = new CitaEstatus(); $citaEstatus->setId($citas->idCitaEstatus); $citaEstatus->setEstatus($citas->CitaEstatus); $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; } }