File size: 3,414 Bytes
6f89cdc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import gradio as gr
from datetime import datetime
import cv2
import numpy as np

# Simulaci贸n de progresi贸n tisular con Fibonacci
def simulador_fibonacci(n: int):
    if n <= 0:
        return [0]
    elif n == 1:
        return [0, 1]
    secuencia = [0, 1]
    for i in range(2, n):
        secuencia.append(secuencia[i - 1] + secuencia[i - 2])
    return f"Secuencia generada: {secuencia}"

# Procesamiento y vista previa de imagen
def mostrar_imagen(imagen):
    return imagen

# An谩lisis facial simple: detecci贸n de rostros
def analisis_facial(imagen):
    img = np.array(imagen)
    gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
    detector = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
    faces = detector.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)

    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)

    if len(faces) == 0:
        return img, "No se detectaron rostros."
    else:
        return img, f"Se detectaron {len(faces)} rostro(s)."

# Consentimiento informado (demo)
def consentimiento():
    return "Consentimiento informado aceptado."

# Encuesta de satisfacci贸n
opciones_satisfaccion = ["Excelente", "Buena", "Regular", "Mala"]
def registrar_satisfaccion(seleccion, comentario):
    return f"Gracias por su opini贸n: {seleccion}. Comentario: {comentario}"

# Interfaz Gradio
with gr.Blocks(title="Panacea 脥cono - Plataforma Tecnol贸gica en Salud") as demo:
    gr.Markdown("## 馃 Plataforma Panacea 脥cono S.A. - Tecnolog铆a en Salud, Blockchain y Simulaci贸n")

    with gr.Tabs():
        with gr.TabItem("馃攣 Simulador M茅dico-Quir煤rgico"):
            iteraciones = gr.Slider(1, 20, step=1, label="Iteraciones quir煤rgicas")
            resultado_simulacion = gr.Textbox(label="Resultado de la simulaci贸n")
            gr.Button("Ejecutar simulaci贸n").click(fn=simulador_fibonacci, inputs=iteraciones, outputs=resultado_simulacion)

        with gr.TabItem("馃摲 Subida de Im谩genes Cl铆nicas"):
            imagen_subida = gr.Image(type="pil", label="Imagen m茅dica")
            imagen_preview = gr.Image(label="Vista previa")
            imagen_subida.change(fn=mostrar_imagen, inputs=imagen_subida, outputs=imagen_preview)

        with gr.TabItem("馃 An谩lisis Facial M茅dico"):
            imagen_facial = gr.Image(type="pil", label="Foto frontal")
            imagen_analizada = gr.Image(label="Detecci贸n facial")
            resultado_rostros = gr.Textbox(label="Resultado del an谩lisis facial")
            imagen_facial.change(fn=analisis_facial, inputs=imagen_facial, outputs=[imagen_analizada, resultado_rostros])

        with gr.TabItem("馃Ь Consentimiento Informado"):
            gr.Markdown("Revise y acepte el consentimiento para procedimientos m茅dicos.")
            gr.Button("Aceptar consentimiento").click(fn=consentimiento, outputs=gr.Textbox())

        with gr.TabItem("馃搳 Encuesta de Satisfacci贸n"):
            seleccion = gr.Radio(opciones_satisfaccion, label="驴C贸mo califica su experiencia?")
            comentario = gr.Textbox(label="Comentarios adicionales")
            resultado_encuesta = gr.Textbox(label="Resultado del registro")
            gr.Button("Enviar opini贸n").click(fn=registrar_satisfaccion, inputs=[seleccion, comentario], outputs=resultado_encuesta)

if __name__ == "__main__":
    demo.launch(server_port=7862)