def main(): util=Utilidades() #creo objeto de la clase Utilidades dic_especialidades,dic_medicas,dic_pacientes,dic_enfermeras,dic_recepcionistas,dic_medicamentos,lista_hosp=util.lectura('especialidades.csv','informacion.csv','medicina.csv') #llamada al metodo de Utilidades para guardar lo que nos devuelve en variables hosp=Hospital(lista_hosp[0],lista_hosp[1],lista_hosp[2],lista_hosp[3],lista_hosp[4],None,dic_pacientes,dic_medicas,dic_especialidades,dic_enfermeras,dic_recepcionistas,dic_medicamentos) #creo el objeto de hospital donde los primeros parámetros los toma de la lista de info hospital recep=dic_recepcionistas[1] #objeto de la clase Recepcionista enf=dic_enfermeras[1] opcion=0 lista_info=[] #MENU DE OPCIONES while opcion!=5: try: print('\nMenú de opciones\n 1) Altas\n 2) Consultas\n 3) Revisiones\n 4)Archivos\n 5) Salida\n') opcion=int(input('Seleccione una opción: ')) if opcion==1: #MENU ALTAS opcion1=0 while opcion1!=7: try: print('\nMenú de altas\n 1) Médica\n 2) Paciente\n 3) Enfermeras\n 4) Recepcionista\n 5)Especialidad\n 6)Medicamento\n 7)Regresar al menú de opciones') opcion1=int(input('Seleccione una opción: ')) #input ha de ser un integer, sino salta a la expeción if opcion1==1: #ALTA MEDICA print('\nInformación de la médica a dar de alta: ') #pido por pantalla todos los inputs necesarios para dar de alta una médica, en este caso no ponemos criterios de entrada por pantalla nombre=input('-> Nombre: ').title() apellido=input('-> Primer apellido: ').title() nom=nombre+' '+apellido #dado como un unico parametro dentro de los atributos direccion=input('-> Dirección: ') ciudad=input('-> Ciudad: ') cp=input('-> CP: ') telf=input('-> Telf: ') email=input('-> Email: ') especialidad=input('-> Especialidad: ') #ningún criterio de entrada de especialidad, no se especifica que tenga que estar dentro del dic_especialidades id_m=len(dic_medicas.keys())+1 #el identificador será el siguiente a tantas claves del diccionario habrá password=util.crea_password(nombre,apellido,telf) #creo la contraseña con el metodo de la clase utilidades med=Medica(id_m,nom,direccion,ciudad,cp,telf,email,especialidad,password) #creo el objeto de la clase médica hosp.metodo_alta(med,id_m,recep,'med') #llamada al método de hospital print('Médica dada de alta con éxito') elif opcion1==2: #ALTA PACIENTE print('\nInformación de la paciente a dar de alta: ') nombre=input('-> Nombre: ').title() apellido=input('-> Primer apellido: ').title() nom=nombre+' '+apellido direccion=input('-> Dirección: ') ciudad=input('-> Ciudad: ') cp=input('-> CP: ') telf=input('-> Telf: ') email=input('-> Email: ') grupos_sanguineos=('AB+','AB-','A+','A-','B+','B-','0+','0-') while True: grupo_sanguineo=input('-> Grupo Sanguíneo: ') #compruebo que el grupo sanguieno introducido por pantalla estea dentro de la tupla if grupo_sanguineo in grupos_sanguineos: id_p=len(dic_pacientes.keys())+1 pac=Paciente(id_p,nom,direccion,ciudad,cp,telf,email,grupo_sanguineo) hosp.metodo_alta(pac,id_p,recep,'pac') print('Paciente dada de alta con éxito') break else: print('No existe tal grupo sanguíneo') elif opcion1==3: #ALTA ENFERMERA print('\nInformación de la enfermera a dar de alta: ') nombre=input('-> Nombre: ').title() apellido=input('-> Primer apellido: ').title() nom=nombre+' '+apellido direccion=input('-> Dirección: ') ciudad=input('-> Ciudad: ') cp=input('-> CP: ') telf=input('-> Telf: ') email=input('-> Email: ') id_e=len(dic_enfermeras.keys())+1 #el identificador será el siguiente a tantas claves del diccionario habrá password=util.crea_password(nombre,apellido,telf) categorias_disponibles=['J:enfermera junior','M:enfermera senior'] #solo me quedan por asigar estas dos categorias if categorias_disponibles[0] in dic_enfermeras[-1]: enf=Enfermera(id_e,nom,direccion,ciudad,cp,telf,email,password,categorias_disponibles[1]) elif categorias_disponibles[1] in dic_enfermeras[-1]: enf=Enfermera(id_e,nom,direccion,ciudad,cp,telf,email,password,categorias_disponibles[0]) hosp.metodo_alta(enf,id_e,recep,'enf') print('Enfermera dada de alta con éxito') elif opcion1==4: # ALTA RECEPCIONISTA print('\nInformación de la recepcionista a dar de alta: ') nombre=input('-> Nombre: ').title() apellido=input('-> Primer apellido: ').title() nom=nombre+' '+apellido direccion=input('-> Dirección: ') ciudad=input('-> Ciudad: ') cp=input('-> CP: ') telf=input('-> Telf: ') email=input('-> Email: ') id_r=len(dic_recepcionistas.keys())+1 #el identificador será el siguiente a tantas claves del diccionario habrá password=util.crea_password(nombre,apellido,telf) #NO SE COMO OTORGAR LOS TURNOS turnos=['1:matutino','2:verspertino','3:nocturno','4:rotatorio'] #turnos de recepcionistas for i in turnos: if turnos[i] is in dic_recepcionistas[-1]: rec=Recepcionista(id_r,nom,direccion,ciudad,cp,telf,email,password,turno[i-1]) hosp.metodo_alta(rec,id_r,recep,'recep') print('Recepcionista dada de alta con éxito') elif opcion1==5: #ALTA ESPECIALIDAD print('Información de la especialidad a dar de alta: ') especialidad=input('-> Nombre: ').title() if especialidad is in dic.especialidades: print('La especialidad ya existe') elif especialidad is not in dic_especialidades: try: codigo=int(input('Introduzca el codigo de la especialidad: ')) espe=Especialidad(codigo,nombre) hosp.metodo_altas(espe,codigo,recep,'espe') except ValueError: print('EL codigo no es un numero') elif opcion1==6: #ALTA MEDICAMENTO print('Infromación sobre le medicamento a dar de alta: ') codigo=input('Código: ') princ_activ=input('Principio Activo: ') marca=input('Marca: ') laboratorio=('Laboratorio: ') #FALTA COMPROBAR SI YA EXISTE Y NOTIFICAR medicamento=Medicamento(codigo,princ_activ,marca,laboratorio) hosp.metodo_alta(medicamento,codigo,recep,'medicamento') print('Medicamento dado de alta con éxito') elif opcion1<1 or opcion1>6: #SALIDA MENU ALTAS print('La opcion seleccionada no está disponible') except ValueError: print('Opción seleccionada no válida') print('Ha salido del menú de altas') elif opcion==2: #MENU CONSULTAS opcion2=0 while opcion2!=7: try: print('\nMenú de consulta\n 1) Médica\n 2) Paciente\n 3) Enfermera\n 4) Recepcionista\n 5)Especialidad\n 6)Medicamento\n 7)Recetas\n 8)Derivaciones 9)Medico por especialidad 10)Regresar al menú de opciones') opcion2=int(input('Seleccione una opción: ')) #input ha de ser un integer, sino salta a la expeción if opcion2==1: #BUSQUEDA MÉDICA opcion3=0 while opcion3!=3: try: print('\nOpciones de consulta de médicas\n 1) Por nombre y apellido\n 2) Por número identificador\n 3) Regresar al menú de búsqueda\n') opcion3=int(input('Seleccione una opción: ')) if opcion3==1: #busqueda medica por nombre nom=input('Introduzca el nombre y apellido de la médica: ').title() if nom.replace(' ','').isalpha()==True: lista_med=[] med=consulta_dics(lista_med,'med'): if med==[]: #si la lista esta vacía quiere decir que no ha encontrado ninguna médica con ese nombre print('\nNo figura una médica con ese nombre') else: #la lista no está vacía, hay una o más médicas con el nombre introducido for i in range(len(med)): #recorro la lista, puede que recorra más posiciones de las que necesito, pero solo me imprimirá las que encuentre en la lista print('\n -> ',med[i],'\n') #me imprime una flechita por cada médica que haya else: print('Debe introducir letras') #cuando lo introducido no son letras y son números o símbolos elif opcion3==2: #busqueda medica por identificador try: id_m=int(input('Introduzca el número identificador: ')) #input ha de ser un número med=hosp.consulta_ident(id_m,'med') #me devulve el número identificador si existe if med==None: #no ha encontrado ninguna coincidencia print('\nNo figura una médica con ese número identificador') else: #lo ha encontrado print(med) except ValueError: #si mete cualquier cosa que no sea un entero print('\nDebe introducir un número') elif opcion3<1 or opcion3>3: print('\nLa opción seleccionada no está disponible') #PLANTEAR DE NUEVO ELL METODO DE CONSULTA PACIENTES Y ESTRUCTURARLOOOOOOOOOOOOOOO elif opcion2==2: #BUSQUEDA PACIENTE opcion3=0 while opcion3!=3: try: print('\nOpciones de consulta de pacientes\n 1) Por nombre y apellido\n 2) Por número identificador\n 3) Regresar al menú de búsqueda\n') opcion3=int(input('Seleccione una opción: ')) if opcion3==1: #busqueda paciente por nombre nom=input('Introduzca el nombre y apellido de la paciente: ').title() if nom.replace(' ','').isalpha()==True: #input han de ser letras pac=hosp.consulta_dics(nom,recep,dic_pacientes) if p==[]: #si la lista esta vacía quiere decir que no ha encontrado ninguna paciente con ese nombre print('\nNo figura una paciente con ese nombre') else: #la lista no está vacía, hay una o más pacientes con el nombre introducido for i in range(len(p)): #recorro la lista, puede que recorra más posiciones de las que necesito, pero solo me imprimirá las que encuentre en la lista print(' -> ',p[i][i].muestra_datos(),'\n') #me imprime una flechita por cada paciente que haya else: print('Debe introducir letras') #cuando lo introducido no son letras y son números o símbolos elif opcion3==2: #busqueda paciente por identificador try: id_p=int(input('Introduzca el número identificador: ')) #input ha de ser un número p=hosp.ipaciente(id_p) #me devulve el número identificador si existe if p==None: #no ha encontrado ninguna coincidencia print('\nNo figura una paciente con ese número identificador') else: #lo ha encontrado print(p) except ValueError: #si mete cualquier cosa que no sea un entero print('\nDebe introducir un número') elif opcion3<1 or opcion3>3: print('\nLa opción seleccionada no está disponible') except ValueError: #cuando al introducir la opcion introduzca algo que no sea un entero print('La opción seleccionada no es válida, por favor, seleccione otra opción') elif opcion2==3: #BUSQUEDA ENFERMERA elif opcion2==4: #BUSQUEDA RECEPCIONISTA elif opcion2==5: #BUSQUEDA ESPECIALIDAD elif opcion2==6: #BUSQUEDA MEDICAMENTO elif opcion2==7: #BUSQUEDA RECETAS elif opcion2==8: #BUSQUEDA DERIVACIONES elif opcion2==9: #BUSQUEDA MEDICO POR ESPECIALIDAD elif opcion2<0 or opcion2>9: #SALIDA print('la opcion seleccionada no está disponible') except ValueError: print('opcion seleccionada no es valida') elif opcion1==2: #busqueda paciente #MENÚ OPCIONES BÚSQUEDA opcion2=0 while opcion2!=3: try: print('\nOpciones de búsqueda\n 1) Por nombre y apellido\n 2) Por número identificador\n 3) Regresar al menú de búsqueda\n') opcion2=int(input('Seleccione una opción: ')) if opcion2==1: #busqueda paciente por nombre nom=input('Introduzca el nombre y apellido de la paciente: ').title() if nom.replace(' ','').isalpha()==True: #input han de ser letras p=hosp.consulta_paciente(nom,recep,dic_pacientes) if p==[]: #si la lista esta vacía quiere decir que no ha encontrado ninguna paciente con ese nombre print('\nNo figura una paciente con ese nombre') else: #la lista no está vacía, hay una o más pacientes con el nombre introducido for i in range(len(p)): #recorro la lista, puede que recorra más posiciones de las que necesito, pero solo me imprimirá las que encuentre en la lista print(' -> ',p[i][i].muestra_datos(),'\n') #me imprime una flechita por cada paciente que haya else: print('Debe introducir letras') #cuando lo introducido no son letras y son números o símbolos elif opcion2==2: #busqueda paciente por identificador try: id_p=int(input('Introduzca el número identificador: ')) #input ha de ser un número p=hosp.ipaciente(id_p) #me devulve el número identificador si existe if p==None: #no ha encontrado ninguna coincidencia print('\nNo figura una paciente con ese número identificador') else: #lo ha encontrado print(p) except ValueError: #si mete cualquier cosa que no sea un entero print('\nDebe introducir un número') elif opcion1<1 or opcion1>3: print('\nLa opción seleccionada no está disponible') except ValueError: #cuando al introducir la opcion introduzca algo que no sea un entero print('La opción seleccionada no es válida, por favor, seleccione otra opción') elif opcion1==3: #busqueda revisiones opcion2=0 while opcion2!=3: try: print('\nOpciones de búsqueda de revisiones médicas\n 1) Por nombre y apellido de la paciente\n 2) Por número identificador\n 3) Regresar al menú de búsqueda\n') opcion2=int(input('Seleccione una opción: ')) if opcion2==1: nom=input('Introduzca el nombre y apellido de la paciente: ').title() if nom.replace(' ','').isalpha(): for i in dic_pacientes: if nom in dic_pacientes[i].regresa_nombre(): pac=dic_pacientes[i] #cada vez que encuentre un paciente en el diccionario con el nombre introducido nos umará uno a b b+=1 if b==0: #si no ha encontrado ningun paciente b será cero print('No existe tal paciente') elif b!=1: #mas de unx paciente con el nombre introducido print('Hay',b,'paceintes con el nombre introducido: ') for i in dic_pacientes: if nom in dic_pacientes[i].regresa_nombre(): print(dic_pacientes[i].muestra_datos()) #me imprime los datos de las pacientes que haya encontrado id_p=int(input('Introduzca el número identificador de la paciente: ')) #pido por pantalla el número de identificador del paciente que deseemos pac=dic_pacientes[id_p] #me crea el objeto paciente con el que haya seleccionado if hosp.consulta_revmed(nom)==[]: #si la lista de revisiones esta vacía print('\nEsta paciente no tiene revisiones médicas') else: print('\nLas revisiones médicas de la paciente',nom,'son:\n',hosp.consulta_revmed(nom)) else: #si simplemente hay una paciente if hosp.consulta_revmed(nom)==[]: print('\nEsta paciente no tiene revisiones médicas') else: print('\nLas revisiones médicas de la paciente',nom,'son:\n',hosp.consulta_revmed(nom)) else: print('Debe introducir letras') #cuando lo introducido no son letras y son números o símbolos elif opcion2==2: try: ident=int(input('Introduzca el número identificador de la paciente: ')) #directamente a través del número identificador, solo habrá una paciente con tal número if hosp.irevmed(ident)==[]: print('Esta paciente no tiene revisiones médicas') else: print('Las revisiones médicas de la paciente son:\n',hosp.irevmed(ident)) except ValueError: #si el id no es número print('\nDebe introducir un número') elif opcion2<1 or opcion>3: print('\nLa opción seleccionada no está disponible') except ValueError: #cuando al introducir la opcion introduzca algo que no sea un entero print('La opción seleccionada no es válida, por favor, seleccione otra opción') elif opcion1<1 or opcion1>3: print('\nLa opción seleccionada no está disponible') except ValueError: #cuando al introducir la opcion introduzca algo que no sea un entero print('La opción seleccionada no es válida, por favor, seleccione otra opción')