{ "cells": [ { "cell_type": "markdown", "id": "d0cbeb810ac114ad", "metadata": { "collapsed": false, "id": "d0cbeb810ac114ad" }, "source": [ "# UD05 · EX1 — Detectar lesiones de rodilla\n", "\n", "Las lesiones en la rodilla son muy comunes en deportes como fútbol, ​​baloncesto o esquí. Estas lesiones pueden ser de diferentes tipos, pero las más comunes son las lesiones en el ligamento cruzado anterior (LCA) y el menisco.\n", "\n", "Muchas veces los sintomas de estas lesiones son similares, pero el tratamiento es diferente. Es por eso que es importante saber la lesión que sufre el paciente para aplicar el tratamiento adecuado y no empeorar la lesión.\n", "\n", "Crearemos un sistema experto con `experta` para ayudar a los entrenadores y médicos especializados en el diagnóstico de lesiones de rodilla, utilizando los datos de los pacientes que han sido diagnosticados por un médico especializado.\n", "\n", "Este sistema se basa en el trabajo [An Expert System for Knee Problems Diagnosis](https://www.researchgate.net/publication/354150948_An_Expert_System_for_Knee_Problems_Diagnosis/link/6127bc8338818c2eaf62917b/download?_tp=eyJjb250ZXh0Ijp7ImZpcnN0UGFnZSI6InB1YmxpY2F0aW9uIiwicGFnZSI6InB1YmxpY2F0aW9uIn19) de [Lamis F Samhan](https://www.researchgate.net/profile/Lamis-Samhan?_tp=eyJjb250ZXh0Ijp7ImZpcnN0UGFnZSI6InB1YmxpY2F0aW9uIiwicGFnZSI6InB1YmxpY2F0aW9uIn19) i [Samy S. Abu-Naser](https://www.researchgate.net/profile/Samy-Abu-Naser?_tp=eyJjb250ZXh0Ijp7ImZpcnN0UGFnZSI6InB1YmxpY2F0aW9uIiwicGFnZSI6InB1YmxpY2F0aW9uIn19)." ] }, { "cell_type": "markdown", "id": "8d54d73218e27f40", "metadata": { "collapsed": false, "id": "8d54d73218e27f40" }, "source": [ "## Hechos\n", "\n", "Para llegar a una conclusión sobre la lesión del paciente, el especialista en el sistema experto debe tener en cuenta diferentes síntomas. Estos síntomas son los siguientes:\n", "\n", "- `golpe` (s1): El dolor o la inflamación de la rodilla comenzó después de una caída, una lesión por rotación o después de la rodilla fue golpeada por un objeto o persona.\n", "- `deformacion` (s2): La rodilla está deformada.\n", "- `rotula inflamada` (s3): La rótula está inflamada, blanda y caliente y hay dolor durante la actividad.\n", "- `rodilla inflamada` (s4): La rodilla está inflamada, blanda y caliente y hay dolor después de sentarse por un tiempo o después de subir y bajar las escaleras.\n", "- `dolor posterior` (s5):Hay un dolor agudo en la parte posterior de la rodilla y es doloroso cuando la pierna se estira.\n", "- `crepitaciones` (s6):Hay crepitaciones en la rodilla o la rodilla se bloquea incluso si mejora el dolor.\n", "- `rojo` (s7): La rodilla está roja y/o inflamada.\n", "- `fiebre` (s8): Hay fiebre asociada con la rodilla inflamada/roja.\n", "- `tiempo` (s9): La rodilla se ha debilitado con el tiempo y el dolor empeora con los cambios de tiempo.\n", "- `inflamacion_detras` (s10): La rodilla está inflamada o tierna\n", "- `joven_anterior_rodilla` (s11): El paciente tiene entre 12 y 18 años y tiene dolor en la parte anterior de la rodilla que empeora con la actividad.\n", "- `joven_rodilla` (s12): El paciente tiene menos de 18 años y tiene dolor en la rodilla.\n", "\n", "Según diferentes combinaciones de síntomas, el sistema experto debe ser capaz de diagnosticar la lesión del paciente.Las lesiones que el sistema experto puede diagnosticar son las siguientes:\n", "\n", "- Si el paciente tiene `golpe`:\n", " - Si también tienes `deformacion`, el sistema experto debe diagnosticar que el paciente puede tener una `fractura` o un `ligamento roto`\n", " - Si también tiene `rotula inflamada`, el sistema experto debe diagnosticar que el paciente puede tener un `fractura rotula`.\n", " - Si también tienes `rodilla inflamada`, el sistema experto debe diagnosticar que el paciente puede tener un `ligamento roto` o el `menisco roto`.\n", " - Si también tiene `dolor posterior`, el sistema experto debe diagnosticar que el el paciente puede tener el `musculo isquiotibial roto`.\n", " - Si también tiene `crepitaciones`, el sistema experto debe diagnosticar que el paciente pueda tener `menisco roto`.\n", "- Si tiene `rojo` y tiene `fiebre`, el sistema experto debe diagnosticar que el paciente pueda tener una `artritis reumatoide`.\n", "- Si tiene `temps`: El sistema expert ha de diagnosticar que el pacient pot tindre `osteo artritis`.\n", "- Si tiene `inflacio_detras`: El sistema experto debe diagnosticar que el paciente puede tener `quiste de Baker`.\n", "- Si tiene `joven_anterior_rodilla`: El sistema experto debe diagnosticar que el paciente puede tener `sindrome de Osgood-Schlatter`.\n", "- Si tiene `joven_rodilla`: El sistema experto debe diagnosticar que el paciente puede tener `dolor de crecimiento`." ] }, { "cell_type": "markdown", "id": "3414dfa1d8e9c879", "metadata": { "collapsed": false, "id": "3414dfa1d8e9c879" }, "source": [ "Comenzamos por instalar e importar la librería `experta` y creando el sistema experto." ] }, { "cell_type": "code", "execution_count": null, "id": "2b830053f4963509", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.300365Z", "start_time": "2024-01-08T22:21:39.790696Z" }, "colab": { "base_uri": "https://localhost:8080/" }, "id": "2b830053f4963509", "outputId": "70b5205c-7ce8-4c90-d790-15d7de4dcef3" }, "outputs": [], "source": [ "%pip install git+https://github.com/openmotics/om-experta.git" ] }, { "cell_type": "code", "execution_count": null, "id": "f8f4772fbf3619f4", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.322844Z", "start_time": "2024-01-08T22:21:48.317080Z" }, "id": "f8f4772fbf3619f4" }, "outputs": [], "source": [ "# Escribe aquí tu código para el sistema experto" ] }, { "cell_type": "markdown", "id": "27b9d955f6d535ce", "metadata": { "collapsed": false, "id": "27b9d955f6d535ce" }, "source": [ "## Prueba del sistema experto\n", "\n", "Para probar el sistema experto, realizaremos una serie de pruebas con diferentes combinaciones de síntomas y verificaremos que el sistema experto diagnostica correctamente la lesión sufrida por el paciente.\n", "\n", "Haremos 6 pruebas con diferentes combinaciones de síntomas, las pruebas que haremos son las siguientes:\n", "\n", "- Prueba 1: paciente con `golpe` y `deformacion`. El sistema experto debe diagnosticar que el paciente puede tener una `fractura`.\n", "- Prueba 2: paciente con `golpe` y `rodilla_inflamada`. El sistema experto debe diagnosticar que el paciente puede tener un `ligamento roto` o `menisco roto`.\n", "- Prueba 3: paciente con `rojo` y `fiebre`. El sistema experto debe diagnosticar que el paciente puede tener una `artritis reumatoide`.\n", "- Prueba 4: paciente con `tiempo`. El sistema experto debe diagnosticar que el paciente puede tener `osteo artritis'.\n", "- Prueba 5: paciente con `inflamacion_detras`. El sistema experto debe diagnosticar que el paciente pueda tener el `quiste de Baker`.\n", "- Prueba 6: paciente con `joven_anterior_rodilla`. El sistema experto debe diagnosticar que el paciente pueda tener el `sindrome de Osgood-Schlatter`." ] }, { "cell_type": "code", "execution_count": null, "id": "21d4191617e7b605", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.367737Z", "start_time": "2024-01-08T22:21:48.345408Z" }, "colab": { "base_uri": "https://localhost:8080/" }, "id": "21d4191617e7b605", "outputId": "174529bb-f5ac-42d3-9988-92e3c6a1840f" }, "outputs": [], "source": [ "# Inicializa el sistema experto, reinicialo y realiza la prueba 1" ] }, { "cell_type": "code", "execution_count": null, "id": "13ba38fdf6886a54", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.466398Z", "start_time": "2024-01-08T22:21:48.371053Z" }, "colab": { "base_uri": "https://localhost:8080/" }, "id": "13ba38fdf6886a54", "outputId": "bba902c9-e73f-45eb-dd8d-3a0a56c36a61" }, "outputs": [], "source": [ "# Escribe el código para la prueba 2 (recuerda reiniciar el sistema)" ] }, { "cell_type": "code", "execution_count": null, "id": "79d613cf97f6694b", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.534052Z", "start_time": "2024-01-08T22:21:48.396770Z" }, "colab": { "base_uri": "https://localhost:8080/" }, "id": "79d613cf97f6694b", "outputId": "de04fc6c-9883-4205-b53b-1c102bebec23" }, "outputs": [], "source": [ "# Escribe el código para la prueba 3 (recuerda reiniciar el sistema)" ] }, { "cell_type": "code", "execution_count": null, "id": "dd19b4b0bd2327fc", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.535774Z", "start_time": "2024-01-08T22:21:48.414181Z" }, "colab": { "base_uri": "https://localhost:8080/" }, "id": "dd19b4b0bd2327fc", "outputId": "f9ab35f1-ced5-49a5-813a-12ee84e62580" }, "outputs": [], "source": [ "# Escribe el código para la prueba 4 (recuerda reiniciar el sistema)" ] }, { "cell_type": "code", "execution_count": null, "id": "5edb8b51c105b704", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.554804Z", "start_time": "2024-01-08T22:21:48.429298Z" }, "colab": { "base_uri": "https://localhost:8080/" }, "id": "5edb8b51c105b704", "outputId": "86f2b2d4-d0e6-4e9a-dc71-4ca2f314316c" }, "outputs": [], "source": [ "# Escribe el código para la prueba 5 (recuerda reiniciar el sistema)" ] }, { "cell_type": "code", "execution_count": null, "id": "91f5bb634021d63c", "metadata": { "ExecuteTime": { "end_time": "2024-01-08T22:21:48.556023Z", "start_time": "2024-01-08T22:21:48.445482Z" }, "colab": { "base_uri": "https://localhost:8080/" }, "id": "91f5bb634021d63c", "outputId": "880bd411-3862-4415-f332-29e22c6320f9" }, "outputs": [], "source": [ "# Escribe el código para la prueba 6 (recuerda reiniciar el sistema)" ] }, { "cell_type": "markdown", "id": "ObWEX0pwa6So", "metadata": { "id": "ObWEX0pwa6So" }, "source": [ "# Entrega\n", "\n", "Una vez completado el Notebook y ejecutado completamente (comprueba que funcionan todas las pruebas). Envialo a la tarea correspondiente de AULES." ] } ], "metadata": { "colab": { "provenance": [], "toc_visible": true }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 5 }