FOLFIRINOX con atenuación de dosis.

https://repl.it/@mauriciolema/FOLFIRINOXAjustDosis

# -*- 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)
print("FOLFIRINOX")
pIri = input("Peldaño irinotecán: 1. 150 mg/m2, 2. 120 mg/m2, 3. Suspender...:")
if int(pIri) == 1:
dIri = float(150)
print("Dosis irinotecán: 150 mg/m2.")
if int(pIri) == 2:
dIri = float(120)
print("Dosis irinotecán: 120 mg/m2.")
if int(pIri) == 3:
dIri = float(0)
print("Dosis irinotecán: se omite por toxicidad.")
pOxa = input("Peldaño oxaliplatino: 1. 85 mg/m2, 2. 60 mg/m2, 3. Suspender...:")
if int(pOxa) == 1:
dOxa = float(85)
print("Dosis oxaliplatino: 85 mg/m2.")
if int(pOxa) == 2:
dOxa = float(60)
print("Dosis oxaliplatino: 60 mg/m2.")
if int(pOxa) == 3:
dOxa = float(0)
print("Dosis oxaliplatino: se omite por toxicidad")
pFU = input("Peldaño fluoruracilo: 1. 2400 mg/m2, 2. 1800 mg/m2, 3. Suspender...:")
if int(pFU) == 1:
dFU = float(2400)
print("Dosis fluoruracilo: 2400 mg/m2.")
if int(pFU) == 2:
dFU = float(1800)
print("Dosis fluoruracilo: 1800 mg/m2.")
if int(pFU) == 3:
dFU = float(0)
print("Dosis fluoruracilo: se omite por toxicidad.")
print("Peldaños irinotecán: 120 mg/m2, suspender")
print("Peldaños oxaliplatino 60 mg/m2, suspender")
print("Peldaños fluoruracilo: 1800 mg/m2, suspender")
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: FOLFIRINOX")
print("Oxaliplatino 85 mg/m2, d1")
print("Folinato 400 mg/m2, d1")
print("Irinotecán 150 mg/m2, d1")
print("Fluoruracilo 2400 mg/m2, d1, infusion de 46 horas")
print("Se repite cada 2 semanas.")

print("Peso: " + tPeso + "kg.")
print("Talla: " + tTalla + "cms.")
print("Superficie corporal (m2): ")
print(round(f_BSA(Talla, Peso),2))

print("Dosis de irinotecán: " + str(dIri) + " mg/m2.")
print("Dosis de oxaliplatino: " + str(dOxa) + " mg/m2.")
print("Dosis de flururacilo: " + str(dFU) + " mg/m2.")

print("Ondansetron ampollas 8 miligramos #2 (dos): administrar 16 miligramos intravenosos dia 1.")
print("Dexametasona ampollas 4 miligramos #5 (cinco): administrar 20 miligramos intravenosos dia 1.")
print("Fosaprepitant ampollas 150 miligramos #1 (uno): administrar 150 miligramos intravenosos dia 1.")
if str(pIri) != "3":
print("Atropina ampollas 1 miligramos #1 (uno): administrar 0.5 miligramos intravenosos dia 1.")

if str(pOxa) != "3":
f_protocolo_droga_BSA("Oxaliplatino", "por 1 dosis / ciclo", "Intravenoso", "ampollas" , "miligramos", dOxa, 100, 1, 50, "Administrar intravenoso - infusion de 2 horas, dia 1.")
f_protocolo_droga_BSA("Folinato", "por 1 dosis / ciclo", "Intravenoso", "ampollas" , "miligramos", 400, 100, 1, 50, "Administrar intravenoso - infusion de 2 horas, dia 1.")
if str(pIri) != "3":
f_protocolo_droga_BSA("Irinotecan", "por 1 dosis / ciclo", "Intravenoso", "ampollas" , "miligramos", dIri, 100, 1, 100, "Administrar intravenoso - infusion de 90 minutos, dia 1.")
print("EXPLICACION: Iniciar la infusion de irinotecan cuando la infusion de folinato lleve 30 minutos, y administrar por un conector en Y.")
if str(pFU) != "3":
f_protocolo_droga_BSA("Fluoruracilo", "por 1 dosis / ciclo", "Intravenoso", "ampollas" , "miligramos", dFU, 100, 1, 500, "Administrar intravenoso - infusion de 46 horas, dia 1.")
print("Pegfilgastrim ampollas 6 miligramos #1 (uno): administrar 6 miligramos subcutaneos, dia 3.")
print()
print()

print("Ondansetron tabletas 8 miligramos #60 (sesenta): tomar 8 miligramos via oral, cada 12 horas (para nauseas y vomito).")
print("Loperamida tabletas 2 miligramos #60 (sesenta): tomar 4 miligramos via oral (2 tabletas), con cada deposicion diarreica (para nauseas y vómito).")

Comentarios