Preview:
Es posible crear un sistema experto utilizando solo JavaScript, aunque esto depende de la complejidad del sistema y de las tareas que desee realizar. A continuación, le presento un ejemplo de cómo podría crearse un sistema experto simple utilizando JavaScript:

se ha creado una clase llamada ExpertSystem que representa un sistema experto. Esta clase tiene un constructor que recibe un conjunto de reglas y las almacena en una propiedad de la instancia. Además, la clase tiene un método llamado evaluate que recibe un conjunto de hechos y evalúa cada una de las reglas del sistema experto para determinar si alguna de ellas se aplica.

Cuando se crea una instancia de la clase ExpertSystem, se le proporciona un conjunto de reglas predefinidas que se utilizarán para evaluar los hechos que se le pasen al método evaluate. Cada regla tiene una serie de condiciones que deben cumplirse y una conclusión que se aplica si se cumplen todas las condiciones.

Luego, se crea un objeto hechos que representa un conjunto de hechos que se quieren evaluar. Finalmente, se llama al método evaluate pasándole el objeto hechos como argumento y se imprime en pantalla la conclusión obtenida. En este caso, al cumplirse la regla que tiene como condición tienePerro: true y tieneGato: false, la conclusión que se imprime en pantalla es "esAmanteDeLosPerros".

Espero que esto te haya ayudado a entender el funcionamiento del código que has proporcionado. Si tienes alguna pregunta adicional, no dudes en preguntar.







// Crear una clase para representar el sistema experto
class ExpertSystem {
  // Constructor para inicializar el sistema experto con un conjunto de reglas
  constructor(rules) {
    this.rules = rules;
  }

  // Método para evaluar una serie de hechos y determinar si una regla se aplica
  evaluate(facts) {
    for (let i = 0; i < this.rules.length; i++) {
      let rule = this.rules[i];
      let conditionMet = true;

      for (let j = 0; j < rule.conditions.length; j++) {
        let condition = rule.conditions[j];
        if (!facts[condition.fact]) {
          conditionMet = false;
          break;
        }
      }

      if (conditionMet) {
        return rule.conclusion;
      }
    }

    return null;
  }
}

// Crear una instancia del sistema experto con algunas reglas predefinidas
let expertSystem = new ExpertSystem([
  {
    conditions: [
      { fact: "tienePerro", value: true },
      { fact: "tieneGato", value: false }
    ],
    conclusion: "esAmanteDeLosPerros"
  },
  {
    conditions: [
      { fact: "tienePerro", value: false },
      { fact: "tieneGato", value: true }
    ],
    conclusion: "esAmanteDeLosGatos"
  },
  {
    conditions: [
      { fact: "tienePerro", value: true },
      { fact: "tieneGato", value: true }
    ],
    conclusion: "esAmanteDeLosAnimales"
  }
]);

// Evaluar algunos hechos y ver cuál regla se aplica
let hechos = {
  tienePerro: true,
  tieneGato: false
};

let conclusión = expertSystem.evaluate(hechos);
console.log(conclusión); // imprime "esAmanteDeLosPerros"



Si desea incluir múltiples variables en la condición de una regla del sistema experto, puede hacerlo de varias maneras. Una forma de hacerlo es utilizar un objeto con múltiples propiedades para representar la condición, en lugar de una sola propiedad. Por ejemplo:

{
  conditions: [
    { fact: "tieneMascota", value: { tipo: "perro", edad: 2 } },
    { fact: "tieneGato", value: false }
  ],
  conclusion: "esAmanteDeLosPerros"
}


Otra forma de incluir múltiples variables en una condición es utilizar una cadena de texto para representar la condición y luego parsearla para obtener las variables individuales. Por ejemplo:

{
  conditions: [
    { fact: "tieneMascota", value: "perro,2" },
    { fact: "tieneGato", value: false }
  ],
  conclusion: "esAmanteDeLosPerros"
}


En el código que has proporcionado, esta parte del código representa una regla del sistema experto. La regla tiene dos condiciones:

fact: "tienePerro", value: true: esta condición se cumple si el hecho tienePerroestrue`.
fact: "tieneGato", value: false: esta condición se cumple si el hecho tieneGatoesfalse`.
Si ambas condiciones se cumplen, entonces se aplica la conclusión de la regla, que en este caso es "esAmanteDeLosPerros".



Para crear un sistema experto sobre asma grave utilizando JavaScript, podrías utilizar un enfoque basado en reglas. Esto implicaría definir un conjunto de reglas que el sistema experto pueda utilizar para tomar decisiones en base a los inputs que recibe.

Por ejemplo, podrías tener reglas como:

Si el paciente tiene dificultad para respirar y una puntuación de síntomas de asma mayor o igual a 3 en la escala de 0 a 6, entonces se recomienda una visita urgente al médico.
Si el paciente tiene dificultad para respirar y una puntuación de síntomas de asma menor a 3 en la escala de 0 a 6, entonces se recomienda tomar el medicamento de rescate y esperar una hora antes de volver a evaluar los síntomas.
Para implementar estas reglas en JavaScript, podrías utilizar una estructura de datos como un array de objetos, donde cada objeto representa una regla con una serie de condiciones y una acción a realizar. Luego, podrías recorrer este array de reglas y evaluar cada una de ellas en función de los inputs que recibe el sistema experto. Si una regla se cumple, entonces se puede ejecutar la acción correspondiente.

A continuación te muestro un ejemplo de cómo podrías implementar este enfoque en JavaScript:

Copy code
// Definimos un array de objetos que representan las reglas del sistema experto
const reglas = [
  {
    condiciones: [
      { nombre: "dificultadParaRespirar", valor: true },
      { nombre: "puntuacionSintomasAsma", valor: 3, comparador: ">=" }
    ],
    accion: () => {
      console.log("Se recomienda una visita urgente al médico");
    }
  },
  {
    condiciones: [
      { nombre: "dificultadParaRespirar", valor: true },
      { nombre: "puntuacionSintomasAsma", valor: 3, comparador: "<" }
    ],
    accion: () => {
      console.log("Se recomienda tomar el medicamento de rescate y esperar una hora antes de volver a evaluar los síntomas");
    }
  }
];

// Definimos una función que recibe los inputs y evalúa las reglas del sistema experto
function tomarDecision(inputs) {
  // Recorremos el array de reglas
  for (const regla of reglas) {
    // Asumimos que la regla se cumple
    let seCumple = true;



gabrieli@neumomed.com
termina el código anterior por favor
Aquí termina el código que te había proporcionado anteriormente:

Copy code
// Recorremos el array de reglas
  for (const regla of reglas) {
    // Asumimos que la regla se cumple
    let seCumple = true;

    // Recorremos las condiciones de la regla
    for (const condicion of regla.condiciones) {
      // Obtenemos el valor del input que se está evaluando
      const valorInput



      // Definimos un array de objetos que representan las reglas del sistema experto
const reglas = [
  {
    condiciones: [
      { nombre: "dificultadParaRespirar", valor: true },
      { nombre: "puntuacionSintomasAsma", valor: 3, comparador: ">=" }
    ],
    accion: () => {
      console.log("Se recomienda una visita urgente al médico");
    }
  },
  {
    condiciones: [
      { nombre: "dificultadParaRespirar", valor: true },
      { nombre: "puntuacionSintomasAsma", valor: 3, comparador: "<" }
    ],
    accion: () => {
      console.log("Se recomienda tomar el medicamento de rescate y esperar una hora antes de volver a evaluar los síntomas");
    }
  }
];

// Definimos una función que recibe los inputs y evalúa las reglas del sistema experto
function tomarDecision(inputs) {
  // Recorremos el array de reglas
  for (const regla of reglas) {
    // Asumimos que la regla se cumple
    let seCumple = true;

    
    // Recorremos el array de reglas
  for (const regla of reglas) {
    // Asumimos que la regla se cumple
    let seCumple = true;

    // Recorremos las condiciones de la regla
    for (const condicion of regla.condiciones) {
      // Obtenemos el valor del input que se está evaluando
      const valorInput = inputs[condicion.nombre];

      // Si no se ha especificado un comparador, asumimos que se está haciendo una comparación de igualdad
      if (!condicion.comparador) {
        condicion.comparador = "===";
      }

      // Evaluamos la condición
      if (!eval(`${valorInput} ${condicion.comparador} ${condicion.valor}`)) {
        // Si la condición no se cumple, marcamos la regla como no cumplida y salimos del bucle
        seCumple = false;
        break;
      }
    }

    // Si la regla se cumple, ejecutamos la acción correspondiente
    if (seCumple) {
      regla.accion();
      break;
    }
  }
}

// Podemos utilizar la función de la siguiente manera:
tomarDecision({ dificultadParaRespirar: true, puntuacionSintomasAsma: 3 });
// Se recomienda una visita urgente al médico

tomarDecision({ dificultadParaRespirar: true, puntuacionSintomasAsma: 2 });
// Se recomienda tomar el medicamento de rescate y esperar una hora antes de volver a evaluar los síntomas
  
  
  
  Para incluir varios factores en un sistema experto y concluir si un paciente tiene asma grave no controlada, podrías utilizar un enfoque basado en reglas. Para ello, podrías definir un conjunto de reglas que el sistema experto pueda utilizar para tomar decisiones en base a los inputs que recibe.

Por ejemplo, podrías tener reglas como:

Si el paciente tiene asma y el VEF1 es menor al 50%, entonces se recomienda un tratamiento intensivo.
Si el paciente tiene asma y el ACT es menor a 19, entonces se recomienda un tratamiento de control de síntomas.
Si el paciente tiene asma y los eosinófilos son mayores a 500 x mm, entonces se recomienda un tratamiento con corticoides inhalados.
Si el paciente tiene asma y el prick test es positivo, entonces se recomienda un tratamiento de desensibilización.


Para implementar estas reglas en JavaScript, podrías utilizar una estructura de datos como un array de objetos, donde cada objeto representa una regla con una serie de condiciones y una acción a realizar. Luego, podrías recorrer este array de reglas y evaluar cada una de ellas en función de los inputs que recibe el sistema experto. Si una regla se cumple, entonces se puede ejecutar la acción correspondiente.




// Definimos un array de objetos que representan las reglas del sistema experto
const reglas = [
  {
    condiciones: [
      { nombre: "asma", valor: true },
      { nombre: "VEF1", valor: 50, comparador: "<" }
    ],
    accion: () => {
      console.log("Se recomienda un tratamiento intensivo");
    }
  },
  {
    condiciones: [
      { nombre: "asma", valor: true },
      { nombre: "ACT", valor: 19, comparador: "<" }
    ],
    accion: () => {
      console.log("Se recomienda un tratamiento de control de síntomas");
    }
  },
  {
    condiciones: [
      { nombre: "asma", valor: true },
      { nombre: "eosinofilos", valor: 500, comparador: "

       
       
       
   CONJUNTO DE REGLAS
       
       
       const reglas = [
  {
    condiciones: [
      { nombre: "asma", valor: true },
      { nombre: "VEF1", valor: 50, comparador: "<" }
    ],
    accion: () => {
      console.log("Se recomienda un tratamiento intensivo");
    }
  },
  {
    condiciones: [
      { nombre: "asma", valor: true },
      { nombre: "ACT", valor: 19, comparador: "<" }
    ],
    accion: () => {
      console.log("Se recomienda un tratamiento de control de síntomas");
    }
  },
  {
    condiciones: [
      { nombre: "asma", valor: true },
      { nombre: "eosinofilos", valor: 500, comparador: ">" }
    ],
    accion: () => {
      console.log("Se recomienda un tratamiento con corticoides inhalados");
    }
  },
  {
    condiciones: [
      { nombre: "asma", valor: true },
      { nombre: "prickTest", valor: true }
    ],
    accion: () => {
      console.log("Se recomienda un tratamiento de desensibilización");
    }
  }
];



downloadDownload PNG downloadDownload JPEG downloadDownload SVG

Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!

Click to optimize width for Twitter