Construccion de un pancreas artificial


Tres años de investigación y desarrollo, algo más de 200 € en material  y dispuesto a usar  su desarrollo en el mismo el mexicano Gustavo Muñoz  finalmente ha  montado un páncreas artificial que le ayuda a sobrellevar la diabetes. Es un caso similar  Dana Lewis ( del  que hablamos en este blog)   y que también tiene diabetes tipo 1 ( donde  el páncreas no produce suficiente insulina – la hormona que hacen que la glucosa disponible para que las células del cuerpo para utilizar como combustible – o, a veces, el páncreas no funciona en absoluto).

Este ingeniero  de forma similar  a Dana ha experimentado con su propio cuerpo para superar los límites de su enfermedad desarrollando también su propio proyecto de páncreas artificial.

El problema de todo este tipo de dispositivos es que hay tras cualquier solución de este tipo siempre inevitablemente ,si hay un factor de éxito y medio funciona , siempre hay un intento de capitalizar la inversión en tiempo de modo que muy pocos comparten el código en repositorios públicos , pues no todo el mundo tiene el espíritu altruista y las ganas de hacerlo incluso sabiendo que así podría ayudar a muchas más personas que comparten esas misma enfermedad ,pero Gustavo  Muñoz es otro tipo de persona y sin duda parece decidido a cambiar las reglas

 

Gustavo  Muñoz  de forma similar a Dana , comenzó con un sistema de alarmas para despertarse  de noche en caso de no poder escuchar la señal de al CGM (Monitorización Continua de Glucosa), un aparato que se implanta bajo la piel y avisa al portador de los cambios en sus niveles de azúcar.  A veces no escuchaba la alarma lo cual lo hizo reflexionar  hasta  decidir crear su propio sistema usando su propio cuerpo a modo de laboratorio para construir su propia solución.

El páncreas es responsable, entre otras funciones de producir y segregar hormonas importantes como la insulina (disminuye los niveles de glucosa sanguínea) y el glucagón (eleva los niveles de glucosa en la sangre),así que su falta o mal funcionamiento puede poner en peligro nuestras vidas excepto que puedas conectarte a un páncreas artificial.

Para funcionar, un páncreas artificial necesita tres dispositivos:

  • Un sensor que se implanta bajo la piel y mide los niveles de glucosa
  • Un dispositivo que inyecta insulina a través de un catéter
  • Un controlador que aun  no se encuentra en el mercado que detecte la glucemia e indique a la bomba de insulina qué hacer.

 

Buscando en la web se encontró  con el excelente  trabajo de Benjamin West, un programador que también padece diabetes tipo 1.

West había realizado experimentos con su bomba de insulina durante dos años y, al terminar, publicó su trabajo de forma altruista  y desinteresada en GitHub aqui,para que cualquiera pueda construir su propio sistema github

Como vemos West escribió un paquete Python proporcionando un conjunto de herramientas para trabajar con datos utilizados y creados por un ” moderno”, alrededor del año 2010 , el régimen de la terapia con insulina .

Ofrece una herramienta basada en la línea de comandos de texto , y una biblioteca de Python para auditar los datos terapéuticos a partir de una variedad de dispositivos médicos utilizados como pueden ser:.

  • Bombas de insulina serie Medtronic Minimed utilizando el a usbstick
  • Medidores de glucosa  LifeScan
    • OneTouch series
    • Mini / Perfil
  • Dexcom , OneTouch Ping, Bayer , OmniPod . Sin ningún orden en particular.
  • Bayer , próximamente

Los comandos utilizando PYTHONPATHe están en el directorio raíz del repositorio y se supone que ha instalado en su sistema insulaudit ( incluyendo el desarrollo de la versión ) .Utilizan una  función de escaneo de puertos para probar si somos capaces de hablar con una bomba (es sólo intercambiar unos pocos bytes , nada más ::)

# fails
PYTHONPATH=src/ python -m insulaudit.main -v clmm   hello
insulaudit -v clmm hello

La especificación de un puerto parece funcionar . Si no lo hace , vuelva a intentar un par de veces . ::

# using the subcommand stuff:::
PYTHONPATH=src/ python -m insulaudit.main -v clmm --port /dev/ttyUSB0  hello
insulaudit -v clmm --port /dev/ttyUSB0 hello

# run the protocol exercise directly
PYTHONPATH=src/ python src/insulaudit/devices/clmm/proto.py /dev/ttyUSB0
python -m insulaudit.devices.clmm.proto.py /dev/ttyUSB0

# read-pump-model.log - protocol exercise to read pump
model number.  Log of it running successfully 5 times
before it starts failing.  stderr and timestamps were
not capture. :-(

Sobre  el marco básico  la compatibilidad con el protocolo debe ser estabilizada  teniendo la las herramientas   para obtener las siguientes utilidades:

  • convertir hola a algún tipo de exploración
  • introducir nuevos flujos de dispositivos
  • introducir perfiles de dispositivo / fluye consola
  • registros de récord
  • revisar los registros
  • registros de auditoría
  • registros de fusiones
  • buscar
  • reformatear.

El mexicano adaptó  todo este  trabajo a  sus propias herramientas para extraer datos y enviar ciertos comandos a la bomba de insulina. Aún así, tenía que seguir controlando el tratamiento de manera constante, y por eso se animó a implementar ciertas mejoras del paquete de Ben decidiendo desarrollar un sistema que le permitiera configurarlo y olvidarme de él”,un proyecto al que llamó Simpancreas.

 

Tras meses de investigación y pruebas, Gustavo por fin programó una placa de Raspberry como Dana o Benjamin ,pero más tarde la sustituyó por una placa  Intel Edition, más pequeña , acompañado de una batería y una antena

Dado el grave riesgo par la salud que puede producir un  tratamiento inadecuado para reducir los riesgos, Gustavo extrae información y la analiza en gráficos que le permiten tener todo bajo control.

sinpancreas

 

Aunque esta muy cerca de ser autónomo este ingeniero advierte del riesgo que podría suponer para una persona sin sus conocimientos tratar de hacer lo mismo,razón  por la que la  FDA , piden a los desarrolladores que no publiquen todo el código de su trabajo ni unas instrucciones específicas para llevarlo a cabo. Aunque Gustavo colabora con varias organizaciones, solo publica fragmentos de su trabajo y se asegura de que las personas inexpertas no los puedan utilizar sin ayuda.

OpenAPS (en español, Sistema de Páncreas Artificial de Fuente Abierta) es una plataforma que ofrece ayuda, documentación y consejos para garantizar la seguridad de aquellas personas dispuestas a fabricar su propio páncreas artificial.

Por su parte, Gustavo es cofundador junto con Kenneth Stack de Perceptus, una organización que forma a los pacientes a través de gráficos, y ha documentado todo su proceso a través de un blog.

Fuente aqui

Anuncios

Sensor de Glucosa para Arduino y Netduino


Glucometer es un dispositivo médico para determinar la concentración aproximada de glucosa en la sangre. Una pequeña gota de sangre, obtenida pinchando la piel con una lanceta, se coloca sobre una tira de ensayo desechable que el medidor lee y utiliza para calcular el nivel de glucosa en sangre. El medidor muestra el nivel en mg / dl o mmol / l.

presentacion_glucometro
A pesar de intervalos muy variables entre las comidas o el consumo ocasional de comidas con una carga de carbohidratos sustancial, humanos los niveles de glucosa en la sangre tienden a permanecer dentro de la gama normal. Sin embargo, poco después de comer, el nivel de glucosa en la sangre puede aumentar, en los no diabéticos, de manera temporal hasta 7,8 mmol / L (140 mg / dL) o un poco más.
Conexión del sensor
Antes de comenzar a utilizar el glucómetro necesitamos una medida al menos en la memoria del glucómetro. Después de eso, puede obtener toda la información contenida en el glucómetro (fecha, valor de glucosa).
elementos_pulsometro
Encienda el glucómetro y coloque una tira de prueba en la máquina cuando la máquina está lista. Observe el indicador para la colocación de la sangre a la tira.
glucometro
Limpie el extremo de su dedo índice con alcohol antes de pincharse con una aguja o lanceta estéril.
pinchando_dedo
Punzee la punta de su dedo en la almohadilla suave, carnoso y obtener una gota de sangre. El tipo de gota de sangre está determinado por el tipo de tira que está utilizando
dedo_sangre
Coloque la gota de sangre en el lado de la tira.
prueba_glucosa1
prueba_glucosa
El glucómetro se tome unos momentos para calcular la lectura de azúcar en la sangre
medida_glucosa
El glucómetro almacenará el valor en la memoria.
Con el fin de extraer los datos del glucómetro a la Arduino o Raspberry Pi, conecte el cable como se muestra en la imagen.
conectando_lector_azul
Usted debe ver en la pantalla del glucómetro el mensaje “PC”, que indica la conexión correcta.
elementos_pulsometro
Library functions para Arduino
Getting data
With a simple function we can read all the measures stored in the glucometer and show them in the terminal. The function must be used before the intilizazion of the serial monitor.
Example of use:
  {
 eHealth.readGlucometer();
 Serial.begin(115200);
 }
The amount of data read is accessible with a another public function.
Example of use:
  {
 uint8_t numberOfData eHealthClass.getGlucometerLength()
 }
The maximum number of measures is 32. The vector where data is a public variable of the e-Health class.
Example of use:
{ Serial.print(F("Glucose value : ")); Serial.print(eHealth.glucoseDataVector[i].glucose); Serial.println(F(" mg/dL")); }
Arduino
Upload the next code for seeing data in the serial monitor:
Show Code

  / *
 * eHealth sensor platform for Arduino and Raspberry from Cooking-hacks.
  *
 * Description: "The e-Health Sensor Shield allows Arduino and Raspberry Pi 
 * users to perform biometric and medical applications by using 9 different 
 * sensors: Pulse and Oxygen in Blood Sensor (SPO2), Airflow Sensor (Breathing),
 * Body Temperature, Electrocardiogram Sensor (ECG), Glucometer, Galvanic Skin
 * Response Sensor (GSR - Sweating), Blood Pressure (Sphygmomanometer) and 
 * Patient Position (Accelerometer)." 
  *  
 * In this example we are going to get data stored in the glucometer 
 * memory and show the result in the serial monitor.   
  *
 * Copyright (C) 2012 Libelium Comunicaciones Distribuidas SL
  * Http://www.libelium.com
  *
  * Este programa es software libre: usted puede redistribuirlo y / o modificarlo
  * Bajo los términos de la Licencia Pública General de GNU según es publicada por
 * the Free Software Foundation, either version 3 of the License, or
  * (A su elección) cualquier versión posterior.
  *
  * Este programa se distribuye con la esperanza de que sea útil,
  * Pero SIN NINGUNA GARANTÍA, incluso sin la garantía implícita de
  * COMERCIALIZACIÓN o IDONEIDAD PARA UN PROPÓSITO PARTICULAR.  Consulte la
  * GNU General Public License para más detalles.
  *
  * Usted debe haber recibido una copia de la Licencia Pública General de GNU
  * Junto con esta librería. If not, see .
  *
 * Version 0.1
 * Author: Luis Martin & Ahmad Saad
  * /

# Include

void setup () {

eHealth.readGlucometer();
Serial.begin(115200);
retardo (100);
}

void loop () {

uint8_t numberOfData = eHealth.getGlucometerLength();
Serial.print(F(“Number of measures : “));
Serial.println(numberOfData, DEC);
retardo (100);

for (int i = 0; i < numberOfData; i++) {
// The protocol sends data in this order
Serial.println(F(“==========================================”));

Serial.print(F(“Measure number “));
Serial.println(i + 1);

Serial.print(F(“Date -> “));
Serial.print(eHealth.glucoseDataVector[i].day);
Serial.print(F(” of “));
Serial.print(eHealth.numberToMonth(eHealth.glucoseDataVector[i].month));
Serial.print(F(” of “));
Serial.print(2000 + eHealth.glucoseDataVector[i].year);
Serial.print(F(” at “));

if (eHealth.glucoseDataVector[i].hour < 10) {
Serial.print(0); // Only for best representation.
}

Serial.print(eHealth.glucoseDataVector[i].hour);
Serial.print(F(“:”));

if (eHealth.glucoseDataVector[i].minutes < 10) {
Serial.print(0);// Only for best representation.
}
Serial.print(eHealth.glucoseDataVector[i].minutes);

if (eHealth.glucoseDataVector[i].meridian == 0xBB)
Serial.println(F(” pm”));
else if (eHealth.glucoseDataVector[i].meridian == 0xAA)
Serial.println(F(” am”));

Serial.print(F(“Glucose value : “));
Serial.print(eHealth.glucoseDataVector[i].glucose);
Serial.println(F(” mg/dL”));
}

delay(20000);
}

Upload the code and watch the Serial monitor.Here is the USB output using the Arduino IDE serial port terminal:
Ejemplo_glucometro_
Raspberry Pi
Compile the following code:
Show Code

//Include eHealth library #include "eHealth.h" //Needed for eHealth eHealthClass eHealth; /********************************************************* * IF YOUR ARDUINO CODE HAS OTHER FUNCTIONS APART FROM * * setup() AND loop() YOU MUST DECLARE THEM HERE * * *******************************************************/ void setup() { eHealth.readGlucometer(); delay(100); } void loop() { uint8_t numberOfData = eHealth.getGlucometerLength(); printf("Number of measures : %d\n",numberOfData); delay(100); for (int i = 0; i %d",eHealth.glucoseDataVector[i].day); printf(" of "); printf("%d",eHealth.numberToMonth(eHealth.glucoseDataVector[i].month)); printf(" of "); printf("%d",2000 + eHealth.glucoseDataVector[i].year); printf(" at "); if (eHealth.glucoseDataVector[i].hour < 10) { printf("0"); // Only for best representation. } printf("%d",eHealth.glucoseDataVector[i].hour); printf(":"); if (eHealth.glucoseDataVector[i].minutes < 10) { printf("0");// Only for best representation. } printf("%d",eHealth.glucoseDataVector[i].minutes); if (eHealth.glucoseDataVector[i].meridian == 0xBB) printf(" pm"); else if (eHealth.glucoseDataVector[i].meridian == 0xAA) printf(" am"); printf("Glucose value : %d mg/dL",eHealth.glucoseDataVector[i].glucose); } delay(20000); } int main (){ setup(); while(1){ loop(); } return (0); }

Más informacion ,pulse aqui