FLOT4 para quimioterapia perioperatoria para cánger gástrico y de la unión EG

Ejecutar protocolo FLOT

Referencia: FLOT4: Al-Batran SE, Homann N, Schmalemberg H, et al. Perioperative chemotherapy with docetaxel, oxaliplatin, and fluorouracil/leucovorin (FLOT) versus epirubicin, cisplatin, and fluorouracil or capecitabine (ECF/ECX) for resectable gastric or gastroesophageal junction (GEJ) adenocarcinoma (FLOT4-AIO): a multicenter, randomized phase 3 trial. J Clin Oncol. 2017;35(suppl; abstr 4004).

# -*- coding: utf-8 -*-
# num2pal version 1.0
#
# Números a palabras en Español.
# Autor:    Felipe Barousse    fbarouse@piensa.com
#
# De mis primeros programas en Python. Pero aun funciona
#
# El algoritmo es muy simple:
# solo recibe un número entero y lo parte en grupos de tres, de ahi
# decide si son unidades, decenas, miles, etc.
#
# Ejemplo:    num2pal.main('45635')
# Regresará la cadena: 'Cuarenta y seis mil seis cientos treinta y cinco'
#
# Externamente habrá que agregar al resultado las unidades (Pesos, Dólares,
#   Litros, Kilos, etc. etc.)  si es que las hay.
#
# Si quieres que tambien traduzca a palabras, por ejemplo los centavos
# -o la parte fraccional- de una cantidad, solo llama a esta rutina
# dos veces, una para la parte entera y otra para la parte fraccional
#
# Previamente debiste haber separado lo que estan ANTES y DESPUES del
# punto decimal para tal efecto
#
# Copyright 2000-2001       Felipe Barousse Boué
# Bufete Consultor de Mexico - Piensa Technologies
#                           Ap. Cap. Polanco # 336
#                           Mexico D.F., 11550,  Mexico
#                           http://www.piensa.com/
#                           info@piensa.com
# LICENCIA DE USO:
# Este programa puede ser usado libremente bajo el esquema de la
# licencia LGPL
#
# En otras palabras, solo deberás darme el credito correspondiente en tu
# documentación por el uso de esta rutina, aun cuando la modifiques,
# deberas mencionar que fué basado tu trabajo en ésta idea.
#
# NO HAY GARANTIA ALGUNA SOBRE ESTA RUTINA NI POR EL RESULTADO DEL USO
# QUE SE LE DE
#
# Este programa es usado en sistemas hecho en Python para aplicaciones
# de negocios,
# para imprimir facturas y recibos oficiales que requiren las cantidades en
# letra.
#
# Gracias!                       Felipe Barousse
#
# Creacion inicial:             5 de Febrero de 2000
# Ultima modificación:          26 Febrero 2001
#
#
def unidades(x):
    if x == 0:
        unidad = "cero"
    if x == 1:
        unidad = "un"
    if x == 2:
        unidad = "dos"
    if x == 3:
        unidad = "tres"
    if x == 4:
        unidad = "cuatro"
    if x == 5:
        unidad = "cinco"
    if x == 6:
        unidad = "seis"
    if x == 7:
        unidad = "siete"
    if x == 8:
        unidad = "ocho"
    if x == 9:
        unidad = "nueve"
    return unidad

def teens(x):
    if x == 0:
        teenname = "diez"
    if x == 1:
        teenname = "once"
    if x == 2:
        teenname = "doce"
    if x == 3:
        teenname = "trece"
    if x == 4:
        teenname = "catorce"
    if x == 5:
        teenname = "quince"
    return teenname


def tens(x):
    if x == 1:
        tensname = "diez"
    if x == 2:
        tensname = "veinte"
    if x == 3:
        tensname = "treinta"
    if x == 4:
        tensname = "cuarenta"
    if x == 5:
        tensname = "cincuenta"
    if x == 6:
        tensname = "sesenta"
    if x == 7:
        tensname = "setenta"
    if x == 8:
        tensname = "ochenta"
    if x == 9:
        tensname = "noventa"
    return tensname

def tercia(num):
    numero=str(num)
    if len(numero) == 1:
        numero='00'+numero
    if len(numero) == 2:
        numero='0'+numero
    a=int(numero[0])
    b=int(numero[1])
    c=int(numero[2])
#       print a, b, c
    if a == 0:
        if b == 0:
            resultado=unidades(c)
            return resultado
        elif b == 1:
            if c >= 0 and c <= 5:
                resultado = teens(c)
                return resultado
            elif c >= 6 and c <= 9:
                resultado = tens(b)+' y '+unidades(c)
                return resultado
        elif b == 2:
            if c == 0:
                resultado = 'veinte'
                return resultado
            elif c > 0 and c <= 9:
                resultado ='veinti '+unidades(c)
                return resultado
        elif b >=3 and b <= 9:
            if c == 0:
                resultado = tens(b)
                return resultado
            if c >= 1 and c <= 9:
                resultado = tens(b)+' y '+unidades(c)
                return resultado
    if a == 1:
        if b == 0:
            if c == 0:
                resultado = 'cien'
                return resultado
            elif c > 0 and c <= 9:
                resultado ='ciento '+unidades(c)
                return resultado
        elif  b == 1:
            if c >= 0 and c <= 5:
                resultado = 'ciento '+teens(c)
                return resultado
            elif c >= 6 and c <= 9:
                resultado = 'ciento '+tens(b)+' y '+unidades(c)
                return resultado
        elif b == 2:
            if c == 0:
                resultado = 'ciento veinte'
                return resultado
            elif c > 0 and c <= 9:
                resultado ='ciento veinti '+unidades(c)
                return resultado
        elif b >= 3 and b <= 9:
            if c == 0:
                resultado = 'ciento '+tens(b)
                return resultado
            elif c > 0 and c <= 9:
                resultado = 'ciento '+tens(b)+ ' y '+unidades(c
)
                return resultado

    elif a >= 2 and a <= 9:
        if a == 5:
            prefix='quinientos '
        elif a == 7:
            prefix='setecientos '
        elif a == 9:
            prefix='novecientos '
        else:
            prefix=unidades(a)+' cientos '
        if b == 0:
            if c == 0:
                resultado = prefix
                return resultado
            elif c > 0 and c <= 9:
                resultado = prefix+unidades(c)
                return resultado
        elif b == 1:
            if c >= 0 and c <= 5:
                resultado = prefix+teens(c)
                return resultado
            elif c >= 6 and c <= 9:
                resultado = prefix+tens(b)+' y '+unidades(c)
                return resultado
        elif b == 2:
            if c == 0:
                resultado = prefix+' veinte'
                return resultado
            elif c > 0 and c <= 9:
                resultado = prefix+' veinti '+unidades(c)
                return resultado
        elif b >= 3 and b <= 9:
            if c == 0:
                resultado = prefix+tens(b)
                return resultado
            elif c > 0 and c <= 9:
                resultado = prefix+tens(b)+' y '+unidades(c)
                return resultado
def main(num):
    result=''
    numero=str(num)
    if len(numero) == 1:
        numero='00000000'+numero
    if len(numero) == 2:
        numero='0000000'+numero
    if len(numero) == 3:
        numero='000000'+numero
    if len(numero) == 4:
        numero='00000'+numero
    if len(numero) == 5:
        numero='0000'+numero
    if len(numero) == 6:
        numero='000'+numero
    if len(numero) == 7:
        numero='00'+numero
    if len(numero) == 8:
        numero='0'+numero
    posicion=1
    for i in [0,3,6]:
        var=numero[i]+numero[i+1]+numero[i+2]
        if int(var) != 0:
            res=tercia(var)
            if i == 0:
                result=res+" millones "
            elif i == 3:
                result=result+res+" mil "
            elif i == 6:
                result=result+res
    return result

# Superficie corporal (BSA)
def f_BSA(Ta, Pe):
    # Calculo de la superficie corporal utilizando
    # de estatura en cms, y kg de peso
    BSA = (0.007184 * ((Ta)**0.725)) * (Pe ** (0.425))
    return BSA

def f_dosis_BSA(Dosis, BSA, Porcentaje):
    # Calculo de la dosis por m2 de superficie corporal,
    # e intensidad relativa en porcentaje
    f_dosis_BSA = Dosis * BSA * (Porcentaje/100)
    return f_dosis_BSA

def f_dosis_Kg(Dosis, Peso, Porcentaje):
    # Calculo de la dosis por m2 de superficie corporal,
    # e intensidad relativa en porcentaje
    f_dosis_Kg = Dosis * Peso * (Porcentaje/100
    return f_dosis_Kg

def f_numero_ampollas (Presentacion, DosisTotal, NumeroDeAplicacionesCiclo):
    # NTAA = numerototaldeampollasrequerida
    NTAA = float (DosisTotal/Presentacion)
    if int(NTAA) != NTAA:
        NTAA = int(NTAA)+1
    NTAA = NTAA * NumeroDeAplicacionesCiclo
    return NTAA

def f_protocolo_droga_BSA (Droga1, DiaAdministracion1, ViaAdministracion1, Posologia1, Unidades1, Dosis1, PorcentajeDosis1, NumeroDeAplicacionesCiclo1, Presentacion1, Comentario1):
    DosisTotal1 = f_dosis_BSA(Dosis1, SuperficieCorporal , PorcentajeDosis1)
    NumeroDeAmpollasCiclo1 = f_numero_ampollas (Presentacion1, DosisTotal1, NumeroDeAplicacionesCiclo1)
    StrDroga1 = Droga1 + " " + Posologia1 + " " + str(Presentacion1)+ " " + Unidades1 + " "
    StrDroga1 = StrDroga1 + "# " + str(int(NumeroDeAmpollasCiclo1)) + " (" + main(str(int(NumeroDeAmpollasCiclo1))) + ") " + Posologia1 + ": " + str(int(DosisTotal1)) + " " + str(Unidades1) + " " + " "
    StrDroga1 = StrDroga1 + ViaAdministracion1
    print(StrDroga1)
    print(Comentario1)

def f_protocolo_droga_ABSOLUTO (Droga1, DiaAdministracion1, ViaAdministracion1, Posologia1, Unidades1, Dosis1, PorcentajeDosis1, NumeroDeAplicacionesCiclo1, Presentacion1, Comentario1):
    DosisTotal1 = Dosis1
    NumeroDeAmpollasCiclo1 = f_numero_ampollas (Presentacion1, DosisTotal1, NumeroDeAplicacionesCiclo1)
    if int(NumeroDeAmpollasCiclo1) ==0:
        NumeroDeAmpollasCiclo1 = 1
    StrDroga1 = Droga1 + " " + Posologia1 + " " + str(Presentacion1)+ " " + Unidades1 + " "
    StrDroga1 = StrDroga1 + "# " + str(int(NumeroDeAmpollasCiclo1)) + " (" + main(str(int(NumeroDeAmpollasCiclo1))) + ") " + Posologia1 +  ": " + str(DosisTotal1) + " " + str(Unidades1) + " " + " "
    StrDroga1 = StrDroga1 + ViaAdministracion1
    print(StrDroga1)
    print(Comentario1)

def f_protocolo_droga_Kg (Droga1, DiaAdministracion1, ViaAdministracion1, Posologia1, Unidades1, Dosis1, PorcentajeDosis1, NumeroDeAplicacionesCiclo1, Presentacion1, Comentario1):
    DosisTotal1 = f_dosis_Kg(Dosis1, Peso , PorcentajeDosis1)
    NumeroDeAmpollasCiclo1 = f_numero_ampollas (Presentacion1, DosisTotal1, NumeroDeAplicacionesCiclo1)
    StrDroga1 = Droga1 + " " + Posologia1 + " " + str(Presentacion1)+ " " + Unidades1 + " "
    StrDroga1 = StrDroga1 + "# " + str(int(NumeroDeAmpollasCiclo1)) + " (" + main(str(int(NumeroDeAmpollasCiclo1))) + ") " + Posologia1 +  ": " + str(int(DosisTotal1)) + " " + str(Unidades1) + " " + " "
    StrDroga1 = StrDroga1 + ViaAdministracion1
    print(StrDroga1)
    print(Comentario1)

tTalla = input("Estatura en centimetros?>>")
Talla = float(tTalla)
tPeso = input("Peso en kilogramos?>>")
Peso = float(tPeso)

SuperficieCorporal = f_BSA(Talla, Peso)

print()
print()
print("Protocolo: FLOT - Fluoruracilo, folinato, oxaliplatino, docetaxel")
print("Docetaxel 50 mg/m2, d1")
print("Oxaliplatino 85 mg/m2, d1")
print("Folinato 200 mg/m2, d1")
print("Fluoruracilo 2400 mg/m2, d1 - infusión de 46 horas")
print("Se repite cada 2 semanas.")
print("Peso: " + str(tPeso) + "kg.")
print("Talla: " + str(tTalla) + "cms.")
print("Superficie corporal (m2): ")
print(f_BSA(Talla, Peso))

f_protocolo_droga_ABSOLUTO("Dexametasona", "1", "Intravenoso", "ampollas", "miligramos", 20, 100, 1, 4, "Premedicacion antiemetica")

f_protocolo_droga_ABSOLUTO("Ondansetron", "1", "Intravenoso", "ampollas", "miligramos", 16, 100, 1, 8, "Premedicacion antiemetica")

f_protocolo_droga_BSA("Docetaxel", "1", "Intravenoso", "ampollas" , "miligramos", 50, 100, 1, 20, "Administrar intravenoso en 1 hora")

f_protocolo_droga_BSA("Oxaliplatino", "1", "Intravenoso", "ampollas" , "miligramos", 85, 100, 1, 50, "Administrar intravenoso en 2 horas")

f_protocolo_droga_BSA("Folinato", "1", "Intravenoso", "ampollas" , "miligramos", 200, 100, 1, 50, "Administrar intravenoso en 2 horas")

f_protocolo_droga_BSA("Fluoruracilo", "1", "Intravenoso - administrar segun indicaciones", "ampollas" , "miligramos", 2600, 100, 1, 500, "Administrar en infusión intravenosa de 24 horas, día 1")

print("Pegfilgastrim ampollas 6 miligramos #1 (uno): administrar 6 miligramos subcutaneos, dia 3.")

print("Ondansetron tabletas 8 miligramos #60 (sesenta): tomar 8 miligramos via oral, cada 12 horas (para nauseas y vomito).")




Comentarios