En este tutorial aprenderemos cómo construir un dispositivo que funcione como médico virtual. El dispositivo ingresa datos del paciente, que luego pueden enviarse por correo electrónico de forma remota a un médico registrado utilizando el Protocolo simple de transferencia de correo (SMTP), el protocolo de comunicaciones estándar de Internet para transmisiones electrónicas.
El objetivo de este dispositivo es ayudar a los médicos que no pueden visitar a los pacientes en persona. Esto puede deberse a la distancia, la ubicación (por ejemplo, para aquellos en áreas remotas), la inmovilidad patente (debido a una enfermedad o al acceso al transporte) y/o al costo. A veces, una visita médica virtual también puede ser más rentable y permitir que más personas accedan a la atención médica.
Para este proyecto, usaremos Raspberry Pi (RPi), Picamera (una cámara portátil compatible con RPi) y un sensor ultrasónico. Estos dispositivos se procesarán utilizando Raspbian OS y Python. En general, el costo de este proyecto es bastante asequible y puede implementarse en zonas rurales con acceso a Internet.
Componentes necesarios
Herramientas y bibliotecas necesarias:
- Intérprete de Python
- Bibliotecas de Python: picamera : se pueden instalar mediante los siguientes comandos en la terminal...
$ sudo apt-get install python-picamera python3-picamera
- Terminal Putty para acceder al terminal para entrada
Informaciones técnicas
Cuando el dispositivo detecta la presencia del paciente, solicita la información necesaria y la documenta. Al finalizar, estos datos se envían por correo electrónico al médico registrado.
Este proyecto funciona en SMTP. El script del sistema se ejecuta en Python 2.7.
El dispositivo recibe entradas del módulo de la cámara, que incluye un teclado. Los datos se guardan mediante RPi y se envían por correo electrónico al médico mediante SMTP.
Diagrama de bloques
Diagrama de circuito
Para leer correctamente, usaremos un divisor de voltaje porque el RPi GPIO no admite directamente 5V.
Detectando al paciente
Se utiliza un sensor ultrasónico para detectar la presencia de un paciente. El sensor envía ondas ultrasónicas durante unos 20 milisegundos. Cuando estas ondas se reflejan de regreso al sensor, éste detecta la distancia calculando el tiempo en que se envió la onda y luego regresó.
Cómo funciona el sistema
- El sistema sólo funciona cuando hay una persona delante del dispositivo. El sensor de medición de distancia ultrasónico (HC SR-04) detecta el cambio de distancia alrededor del dispositivo (debido al paciente que tiene delante).
- Luego, el dispositivo solicita en la pantalla los detalles programados. Por ejemplo, pide al paciente que abra la boca y los ojos y toma fotografías utilizando el módulo de la cámara, guardando las imágenes localmente.
- El dispositivo también solicita la identificación del paciente.
- Una vez documentados todos los datos, envía un correo electrónico al médico registrado con las imágenes adjuntas, utilizando el “tipo de contenido multiparte”. Este es un tipo de datos que especifica que el correo electrónico contiene contenido multimedia.
- Este correo electrónico se envía mediante el protocolo SMTP. El médico descarga el correo electrónico mediante el Protocolo estándar de acceso a mensajes de Internet (IMAP).
- El médico revisa la información y las imágenes y contacta al paciente.
Entendiendo el código fuente
El código se puede entender a partir de sus funciones. Por ejemplo, hay una llamada a una de las funciones de la función principal que es una “intrusión”. Esta función luego llama a otras dos, "Capture_image" y "SendEmail".
Las funciones son las siguientes…
1. Definición de Intrusión: Esta función asegura que el sensor HC SR-04 envíe continuamente una onda ultrasónica y luego calcule la distancia.
Salida.GPIO(TRIG, Verdadero)
tiempo.dormir(0.00001)
Salida.GPIO(TRIG, Falso)
Esta función también tiene un rango. Así, si la distancia frente al sensor es menor que este rango definido, activa otra función para tomar una foto: “image_capture(name)”. También se requiere un parámetro de entrada para el nombre de la imagen.
if(object_stay > 1 y object_present_again == Falso):
object_present_again = Verdadero
nombre = raw_input(“Ingrese su número de visita:”)
imprimir “¡Abre la boca frente a la cámara!”
hora de dormir(3)
imprimir “Tomando una foto…”
capture_image(nombre,”Boca”)
La función también proporciona instrucciones en la pantalla que solicitan el nombre del paciente. Luego, active la cámara para tomar la(s) foto(s).
2. Def capture_image(nombre_,parte): esta función inserta el nombre y la parte del cuerpo del paciente (ojos o boca) en la foto.
cámara.capture (ruta del archivo)
Después de tomar la(s) foto(s), esta función llama a otra función que envía un correo electrónico al médico con las imágenes adjuntas.
descargar(nombre_ + parte, ruta del archivo)
enviarEmail(self.jobid, self.jobid, (self.filepath))
3. Clase sendEmail(threading.Thread): esta función escribe el correo electrónico e identifica si se adjunta algún contenido multimedia. Luego lo envía mediante SMTP al médico correspondiente.
mailServer.sendmail(gmail_user, gmail_user, msg.as_string)
Este proyecto es un ejemplo de cómo es posible implementar un protocolo SMTP simple en aplicaciones que pueden resolver problemas importantes, como el acceso a un médico de familia.