public DetectarResponseapp detectar(DetectarRequestapp request)
        {
            var paciente = _unitOfWork.IPacienteRepository.FindFirstOrDefault(x => x.Identificacion == request.IdPaciente);

            if (paciente == null)
            {
                return(new DetectarResponseapp()
                {
                    Message = $"el paciente no existe"
                });
            }

            DetectarEnfermedadService detectarEnfermedad = new DetectarEnfermedadService();
            DetectarEnfermedadRequest enfermedadRequest  = new DetectarEnfermedadRequest();
            var enfermedades = _unitOfWork.EnfermedadRepository.FindBy(includeProperties: "Sintomas").ToList();

            enfermedadRequest.Enfermedades = enfermedades;
            //asociar sintomas a cada enfermedad//////////////////////////////////////////////////////////////////////////////////////////
            foreach (var Item in enfermedadRequest.Enfermedades)
            {
                Console.WriteLine(Item.Nombre + " " + Item.Id);
                var enfermedadsintoma = _unitOfWork.IEnfermedadSintoma.FindBy(p => p.Enfermedad.Codigo == Item.Codigo, includeProperties: "Sintoma,Enfermedad").ToList();
                Console.WriteLine("sintomas asociadas de " + Item.Nombre);
                foreach (var item2 in enfermedadsintoma)
                {
                    //var sintoma = _unitOfWork.SintomaRepository.FindFirstOrDefault(p => p.Codigo.Equals(item2.Sintoma.Codigo));
                    Console.WriteLine(item2.Sintoma.Descripcion);
                    Item.Sintomas.Add(item2.Sintoma);
                }
                Console.WriteLine("---------------------------------------");
            }

            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            //////////////////buscar sintomas////////////////////////////////////////////////////////////////////////////////////////////
            foreach (var item3 in request.Descipciones)
            {
                var sintomapaciente = _unitOfWork.SintomaRepository.FindFirstOrDefault(p => p.Descripcion == (item3));
                if (sintomapaciente != null)
                {
                    enfermedadRequest.Sintomas.Add(sintomapaciente);
                    Console.WriteLine(sintomapaciente.Descripcion);
                }
            }
            Console.WriteLine("numero de sistomas del paciente : " + enfermedadRequest.Sintomas.Count());
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ///////////////calcilar probabilidad enfermedad////////////////////////////////////////////////////////////////////////////////////////
            if (enfermedadRequest.Sintomas.Count() > 1)
            {
                enfermedadRequest.Paciente = paciente;
                var deteccion = detectarEnfermedad.CalcularProbabilidad(enfermedadRequest);
                ConsultarEnfermedadTratamientoService consultarEnfermedadTratamiento = new ConsultarEnfermedadTratamientoService(_unitOfWork);
                request.tratamientosEnfermedad = consultarEnfermedadTratamiento.GetTratamiento(deteccion.Enfermedad.Codigo);
                return(new DetectarResponseapp()
                {
                    Message = $"se le manda tratamiento", enfermedad = deteccion.Enfermedad, diagnostico = deteccion.Diagnostico
                });
            }
            else
            {
                return(new DetectarResponseapp()
                {
                    Message = $"sus sintomas no estan asociados a una enfermedad pulmonar"
                });
            }
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

            /*
             * if (deteccion.Enfermedad.Gravedad == "ALTA" || deteccion.Enfermedad.Gravedad == "MEDIA")
             * {
             *  CrearCitaService crearCitaService = new CrearCitaService(_unitOfWork);
             *  CitaRequest citaRequest = new CitaRequest(enfermedadRequest.Paciente.Medico, enfermedadRequest.Paciente);
             *  crearCitaService.CrearCita(citaRequest);
             *  ConsultarMedicoService consultarMedico = new ConsultarMedicoService(_unitOfWork);
             *  var medicoPaciente=consultarMedico.GetId(enfermedadRequest.Paciente.Medico.Id);
             *  medicoPaciente.Diagnosticos.Add(deteccion.
             *  Diagnostico);
             *  _unitOfWork.IMedicoRepository.Edit(medicoPaciente);
             *
             *  //llamar diagnitco service
             *  CrearDiagnosticoService crearDiagnosticoService = new CrearDiagnosticoService(_unitOfWork);
             *  DiagnosticoRequest diagnosticoRequest = new DiagnosticoRequest(deteccion.Diagnostico.Descripcion,deteccion.Diagnostico.Enfermedad,deteccion.Diagnostico.Paciente,deteccion.Diagnostico.Medico,deteccion.Diagnostico.Estado);
             *
             *  crearDiagnosticoService.CrearDiagnostico(diagnosticoRequest);
             *  _unitOfWork.Commit();
             *  _unitOfWork.Dispose();
             *  return new DetectarResponse() { Message = $"se registro cita" };
             * }
             * else
             * {
             *
             *  return new DetectarResponse() { Message = $"se le manda tratamiento" };
             *  //var consultar = _unitOfWork.IEnfermedadTratamientoRepository.FindBy(c => c.enfermedad == deteccion.Enfermedad);
             *
             *  //var consulta = _unitOfWork.TratamientoRepository.FindBy()
             * }*/
        }
Пример #2
0
        public DetectarResponseapp detectar(DetectarRequestapp2 request2)
        {
            DetectarRequestapp request = new DetectarRequestapp(request2.IdPaciente, request2.Descripciones);
            var paciente_prueba        = _unitOfWork.IPacienteRepository.FindBy(p => p.Identificacion == request2.IdPaciente, includeProperties: "Medico").ToList();
            var paciente = _unitOfWork.IPacienteRepository.FindFirstOrDefault(x => x.Identificacion == request.IdPaciente);

            if (paciente == null)
            {
                return(new DetectarResponseapp()
                {
                    Message = $"el paciente no existe"
                });
            }
            if (paciente.Medico == null)
            {
                return(new DetectarResponseapp()
                {
                    Message = $"Usted no tiene asociado un medico, por favor vaya al menu  a la opcion de --> asociar medico <-- y elija uno"
                });
            }
            DetectarEnfermedadService detectarEnfermedad = new DetectarEnfermedadService();
            DetectarEnfermedadRequest enfermedadRequest  = new DetectarEnfermedadRequest();
            var enfermedades = _unitOfWork.EnfermedadRepository.FindBy(includeProperties: "Sintomas").ToList();

            enfermedadRequest.Enfermedades = enfermedades;
            /////////////asociar sintomas a cada enfermedad//////////////////////////////////////////////////////////////////////////////
            foreach (var Item in enfermedadRequest.Enfermedades)
            {
                Console.WriteLine(Item.Nombre + " " + Item.Id);
                var enfermedadsintoma = _unitOfWork.IEnfermedadSintoma.FindBy(p => p.Enfermedad.Codigo == Item.Codigo, includeProperties: "Sintoma,Enfermedad").ToList();
                Console.WriteLine("sintomas asociadas de " + Item.Nombre);
                foreach (var item2 in enfermedadsintoma)
                {
                    Console.WriteLine(item2.Sintoma.Descripcion);
                    Item.Sintomas.Add(item2.Sintoma);
                }
                Console.WriteLine("---------------------------------------");
            }
            //////////////////buscar sintomas presentados por el paciente////////////////////////////////////////////////////////////////
            foreach (var item3 in request.Descripciones)
            {
                var sintomapaciente = _unitOfWork.SintomaRepository.FindFirstOrDefault(p => p.Descripcion == (item3));
                if (sintomapaciente != null)
                {
                    enfermedadRequest.Sintomas.Add(sintomapaciente);
                    Console.WriteLine(sintomapaciente.Descripcion);
                }
            }
            Console.WriteLine("numero de sistomas del paciente : " + enfermedadRequest.Sintomas.Count());
            /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            ///////////////calcular probabilidad enfermedad//////////////////////////////////////////////////////////////////////////////
            if (enfermedadRequest.Sintomas.Count() > 1)
            {
                enfermedadRequest.Paciente = paciente;
                var deteccion = detectarEnfermedad.CalcularProbabilidad(enfermedadRequest);
                //////////////////////////////////////////////////guardar el diagnostico////////////////////////////////////////////////////
                string descripcion = "";
                if (deteccion.Enfermedad != null)
                {
                    descripcion = ($"usted tiene {deteccion.Probabilidad}% de tener la enfermedad pulmonar de {deteccion.Enfermedad.Nombre}");
                    DiagnosticoRequest      _diagnostico             = new DiagnosticoRequest(descripcion, deteccion.Enfermedad, enfermedadRequest.Paciente, enfermedadRequest.Paciente.Medico, "pendiente", null, new DateTime());
                    CrearDiagnosticoService serviciocreardiagnostico = new CrearDiagnosticoService(_unitOfWork);
                    serviciocreardiagnostico.CrearDiagnostico(_diagnostico);
                }
                ////////////////////retornamos la respuesta de la enfermedad detectada///////////////////////////////////////////////////////
                return(new DetectarResponseapp()
                {
                    Message = $"se le manda tratamiento", MensajeDiagnostico = descripcion
                });
            }
            else
            {
                return(new DetectarResponseapp()
                {
                    Message = $"sus sintomas no estan asociados a una enfermedad pulmonar"
                });
            }
        }