Download app.py from guallar/Test: direct link, hf CLI and curl.
- Browser
- Download file 4.57 kB
-
https://huggingface.co/spaces/guallar/Test/resolve/main/app.py
- Command line
-
hf download hf://spaces/guallar/Test/app.py
-
curl -L -o app.py https://huggingface.co/spaces/guallar/Test/resolve/main/app.py
4.57 kB
| import gradio as gr | |
| farmacos = { | |
| "Paracetamol": { | |
| "dosis": "10-15 mg/kg", | |
| "frecuencia": "cada 6-8 horas", | |
| "max": "60 mg/kg/día", | |
| "observaciones": "" | |
| }, | |
| "Ibuprofeno": { | |
| "dosis": "5-10 mg/kg", | |
| "frecuencia": "cada 6-8 horas", | |
| "max": "30-40 mg/kg/día", | |
| "observaciones": "" | |
| }, | |
| "Amoxicilina": { | |
| "dosis": "25-50 mg/kg/día en 2–3 dosis", | |
| "frecuencia": "cada 8-12 horas", | |
| "max": "En infecciones graves hasta 90 mg/kg/día", | |
| "observaciones": "" | |
| }, | |
| "Acenocumarol": { | |
| "dosis": "0,04 mg/kg/día v.o.", | |
| "max": "3 mg/día (inicio)", | |
| "frecuencia": "Individualizar según INR", | |
| "observaciones": "Antídoto: vitamina K 2,5-5 mg i.v. lenta" | |
| }, | |
| "Acetazolamida": { | |
| "dosis": "5 mg/kg/12-48 h v.o. o i.v.", | |
| "frecuencia": "12-48 horas", | |
| "observaciones": "Alcalinización orina: 5 mg/kg/día cada 8-12 h", | |
| "max": "" | |
| }, | |
| "Acetilcisteína (IV)": { | |
| "dosis": "150 mg/kg dosis inicial", | |
| "frecuencia": "Luego 50 mg/kg en 4 h + 10-20 mg/kg/h 72 h", | |
| "observaciones": "Intoxicación paracetamol. Dosis oral: 140 mg/kg luego 70 mg/kg/4h (17 dosis oral o 12 IV)", | |
| "max": "" | |
| }, | |
| "Acetilsalicílico": { | |
| "dosis": "10-15 mg/kg/4-6 h v.o.", | |
| "frecuencia": "4-6 horas", | |
| "max": "60-80 mg/kg/día", | |
| "observaciones": "Antiinflamatorio: 60-100 mg/kg/día cada 4-6 h" | |
| }, | |
| "Aciclovir": { | |
| "dosis": "20 mg/kg/6 h v.o.", | |
| "frecuencia": "Cada 6 horas", | |
| "max": "", | |
| "observaciones": "5-7 días VVZ, 10 días VHS. IV: RN 15 mg/kg/12 h, resto 10 mg/kg/8 h" | |
| }, | |
| "Activador tisular recombinante del plasminógeno (rtPA)": { | |
| "dosis": "0,1-0,5 mg/kg inicial i.v.", | |
| "frecuencia": "Luego 0,01-0,6 mg/kg/h durante 6-24 h", | |
| "max": "", | |
| "observaciones": "Oclusión catéter: 0,5-2 mg en 1-2 ml" | |
| }, | |
| "Adenosina": { | |
| "dosis": "0,05-0,1 mg/kg i.v. rápida", | |
| "frecuencia": "Repetir cada 2 min hasta 0,25 mg/kg o 12 mg", | |
| "max": "12 mg por dosis", | |
| "observaciones": "" | |
| }, | |
| "Adrenalina": { | |
| "dosis": "PCR: 0,01 mg/kg/dosis i.v.", | |
| "frecuencia": "Neonatos: 0,01-0,03 mg/kg. Inotrópico: 0,1-2 μg/kg/min", | |
| "max": "", | |
| "observaciones": "Obstrucción vía aérea: 0,5 mL/kg 1/1.000 en 5-10 mL SSF" | |
| }, | |
| "Albúmina": { | |
| "dosis": "0,5-2 g/kg/24-48 h (sol. 5 y 20%)", | |
| "frecuencia": "", | |
| "max": "120 mL/kg/día", | |
| "observaciones": "Hipovolemia: 10-20 mL/kg/dosis (5%)" | |
| }, | |
| "Alfentanilo": { | |
| "dosis": "Bolo: 10-50 μg/kg i.v.", | |
| "frecuencia": "Perfusión: 0,5-1,5 μg/kg/min", | |
| "max": "", | |
| "observaciones": "" | |
| } | |
| } | |
| def calcular_dosis(farmaco, peso): | |
| if not farmaco or not peso: | |
| return "Selecciona un fármaco e introduce el peso." | |
| info = farmacos[farmaco] | |
| try: | |
| peso = float(peso) | |
| except Exception: | |
| return "Introduce un valor numérico válido para el peso." | |
| # Intenta calcular dosis mínima y máxima si la fórmula lo permite | |
| texto = f"<b>{farmaco}</b><br>" | |
| if "mg/kg" in info["dosis"]: | |
| import re | |
| match = re.findall(r"(\d+)[-–](\d+)\s*mg/kg", info["dosis"]) | |
| if match: | |
| min_mg, max_mg = map(float, match[0]) | |
| texto += f"Dosis: <b>{min_mg*peso:.2f}–{max_mg*peso:.2f} mg</b> por toma.<br>" | |
| else: | |
| match = re.search(r"(\d+)\s*mg/kg", info["dosis"]) | |
| if match: | |
| dosis = float(match.group(1)) | |
| texto += f"Dosis: <b>{dosis*peso:.2f} mg</b> por toma.<br>" | |
| else: | |
| texto += f"Dosis: {info['dosis']}<br>" | |
| else: | |
| texto += f"Dosis: {info['dosis']}<br>" | |
| texto += f"Frecuencia: {info['frecuencia']}<br>" | |
| if info.get("max"): | |
| texto += f"Máximo: {info['max']}<br>" | |
| if info.get("observaciones"): | |
| texto += f"Observaciones: {info['observaciones']}<br>" | |
| return texto | |
| demo = gr.Interface( | |
| fn=calcular_dosis, | |
| inputs=[ | |
| gr.Dropdown(list(farmacos.keys()), label="Fármaco"), | |
| gr.Number(label="Peso del paciente (kg)") | |
| ], | |
| outputs=gr.HTML(label="Resultado"), | |
| title="Calculadora de dosis pediátricas (SEDAR)", | |
| description="Introduce el fármaco y el peso del paciente para calcular la dosis recomendada según el Manual de Anestesiología SEDAR." | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |