class Teste_Hospital(unittest.TestCase): def setUp(self): self.hospital1 = Hospital("santa casa", "123456", "Rua Ips") def test_atributos(self): self.hospital1.nome | should | equal_to("santa casa") self.hospital1.codigo | should | equal_to("123456") self.hospital1.endereco | should | equal_to("Rua Ips") self.hospital1.funcionarios | should | equal_to([]) def test_vincular_funcionario(self): # vinculando funcionario1: funcionario1 = Funcionario("Joao", "654321") self.hospital1.vincular_funcionarios(funcionario1) self.hospital1.funcionarios | should | have(1).items # vinculando funcionario2 funcionario2 = Funcionario("Pedro", "654321") self.hospital1.vincular_funcionarios(funcionario2) self.hospital1.funcionarios | should | have(2).items # teste_bug self.hospital1.vincular_funcionarios(funcionario1) self.hospital1.funcionarios | should | have(2).items def test_consultar_funcionario(self): funcionario1 = Funcionario("Joao", "654321") self.hospital1.vincular_funcionarios(funcionario1) self.hospital1.consultar_funcionario(funcionario1).nome | should | equal_to("Joao")
def __init__(self, execution_time): super(Simulator, self).__init__() truncate_tables() self.hospital = Hospital() self.execution_time = execution_time self.new_patient = {'patient': None, 'time_elapsed': None} self.distributions = self.__patient_distribution()
def test_internar_paciente(self): Hospital.quadro_hospitais = [] hospital = Hospital("Ferreira","01","Seila") paciente1 = Paciente("Gleicy","09876","18") paciente2 = Paciente("Marcolino","1234","31") medico1 = Medico("Emiliano","1234567","pediatra",["01","02","03"]) hospital.internar_paciente(paciente1,medico1,"10") hospital.internacoes |should| equal_to ([(paciente1,medico1,"10")])
def test_lista_internacao_pacientes_medico_periodo(self): Hospital.quadro_hospitais = [] hospital = Hospital("Ferreira","01","Seila") paciente1 = Paciente("Gleicy","09876","18") paciente2 = Paciente("Marcolino","09876","18") medico1 = Medico("Emiliano","1234567","pediatra",["01","02","03"]) hospital.internar_paciente(paciente1,medico1,"10") hospital.internar_paciente(paciente2,medico1,"15") hospital.lista_internacao_pacientes_medico_periodo() |should| equal_to ([ [(paciente1),(medico1),("10")] , [(paciente2),(medico1),("15")] ])
class Simulator(object): """docstring for Simulator.""" def __init__(self, execution_time): super(Simulator, self).__init__() truncate_tables() self.hospital = Hospital() self.execution_time = execution_time self.new_patient = {'patient': None, 'time_elapsed': None} self.distributions = self.__patient_distribution() def run(self): random_patient = random.random() self.new_patient['patient'] = Patient( 0, names_patients[random.randrange(len(names_patients))]) self.new_patient['time_elapsed'] = self.patient_simulator( random_patient) print(self.new_patient['patient']) self.new_patient['patient'].random_time = random_patient for min in range(self.execution_time): self.minute_simulation(min) def minute_simulation(self, min): if self.new_patient['time_elapsed'] <= 0: random_patient = random.random() self.hospital.new_patient(self.new_patient['patient']) self.new_patient['patient'] = Patient( 0, names_patients[random.randrange(len(names_patients))]) self.new_patient['time_elapsed'] = self.patient_simulator( random_patient) self.new_patient['patient'].random_time = random_patient self.new_patient['time_elapsed'] -= 1 self.hospital.update_state() # self.hospital.save_state() def patient_simulator(self, R): i = 0 for dist in self.distributions: if R < dist: return i i += 1 def __patient_distribution(self): distribution = [] sum_distribution = 0 i = 0 while True: dist = ((math.exp(-7)) * (7**i)) / math.factorial(i) sum_distribution += round(dist, 2) distribution.append(sum_distribution) i += 1 if int(sum_distribution) >= 1: break return distribution
def test_lista_medicos_vinculado_a_um_hospital(self): Hospital.quadro_hospitais = [] Medico.quadro_medicos = [] hospital1 = Hospital("Ferreira","01","Seila") hospital2 = Hospital("Unimed","02","Ruadoleao") hospital3 = Hospital("Benzocriol","03","Rua Ricks") hospital4 = Hospital("ola","04","Rua Ricks") hospital5 = Hospital("oi","05","Rua Ricks") medico1 = Medico("Emiliano","1234567","pediatra",["01","02","03"]) medico2 = Medico("Lucas","987654","geriatra",["01","02","05"]) medico3 = Medico("Luciano","4321","ortopedista",["05","02","01"]) hospital1.lista_medicos_vinculado_a_um_hospital() |should| equal_to([("Emiliano","1234567"),("Lucas","987654"),("Luciano","4321")])
def init(): ORIGINAL_COUNT = 50 #初始感染数量 BROAD_RATE = 0.5 #被传染概率 PROTECTION_RATE = 0.001 # 保护措施增长率(连续)(影响BROAD_RATE, DEATH_RATE, u) EXPOSED_TIME = 5 #平均潜伏时间 HOSPITAL_RECEIVE_TIME = 3 #平均医院收治时间 CURE_TIME = 10 #平均治疗时间 IMMUNED_TIME = 30 #平均免疫期时间 DEATH_RATE = 0.01 / (CURE_TIME + 10 * HOSPITAL_RECEIVE_TIME) #每日死亡概率 BED_COUNT = 2000 #医院床位 SAFETY_DIST = 50 #安全距离 SCALE = SAFETY_DIST * 20 #大小 FLUCTUATION = 4 #各参数与平均值之间的波动 u = 1 #流动意向 PERSON_COUNT = 10000 #城市内人数 can_exposed_infect = False # 潜伏期能否感染他人 recovered_included = True # 是否有免疫期 city = (0, 0) pool = PeoplePool(PERSON_COUNT, city, SCALE, BROAD_RATE, PROTECTION_RATE, DEATH_RATE, EXPOSED_TIME, IMMUNED_TIME, \ HOSPITAL_RECEIVE_TIME, CURE_TIME, SAFETY_DIST, u, FLUCTUATION, \ can_exposed_infect, recovered_included) hos = Hospital(BED_COUNT) for i in range(ORIGINAL_COUNT): idx = np.random.randint(0, PERSON_COUNT) pool.peoples[idx][2] = 1 # 设定status为1,即潜伏 pool.peoples[idx][4] = 0 # 设定infected_time = 0 return pool, hos
def main(): """ Wrapper around the hospital class. """ arguments = sys.argv if len(arguments) < 2: print("ERROR: missing argument - %s" %(parser.get_hosp_names_string())) return hospital_name = arguments[1] if not parser.valid_hosp(hospital_name): print("ERROR: invalid argument - %s" %(parser.get_hosp_names_string())) return # Construct patient using info. from parser. global h h = Hospital(hospital_name, parser.get_bc_contact_info()[ADDRESS], parser.get_bc_contact_info()[PORT]) contact_info = parser.get_hosp_contact_info(hospital_name) address = contact_info[ADDRESS] port = contact_info[PORT] # Condition variable for clean termination. cv = Condition() # Create socket object. s = socket.socket() s.bind(('', port)) print("Socket binded to %s" %(port)) # Put the socket into listening mode. s.listen(5) print("Socket is listening") # Spawn repl thread. print("Starting repl for %s." %(hospital_name)) t = Thread(target=repl, args=(s, cv)) t.daemon = True t.start() # Spawn connection thread. t = Thread(target=handle_connection, args=(s,)) t.daemon = True t.start() # Start flask server for frontend t = Thread(target=flask_thread(), args=()) t.daemon = True t.start() # Wait for termination. termination = False cv.acquire() while not termination: cv.wait() termination = True cv.release()
def main(): # algorithm arguments init density = 3000 dist = 0.02 step = 0.005 # evaluator arguments init total_capacity = 3000 window_size = 3 tmp_num = 2 tmp_max_list = [90] * tmp_num method = "DP" # huff arguments init alpha = 1 beta = 1 ignore_prob = 0.01 reachable_dist = 0.02 huff = Huff(alpha, beta, reachable_dist, ignore_prob) # file name patient_filename = sys.argv[1] hospital_filename = sys.argv[2] # record variables result_pos = [] start_time = time.time() hospital_list = HospitalList() hospital_list.read_file(hospital_filename) pat_list = PatientList() pat_list.read_file(patient_filename) pos_list = get_init_pos_list((pat_list.xmin, pat_list.xmax), (pat_list.ymin, pat_list.ymax), step) pos_list.set_range(pat_list.xmin, pat_list.xmax, pat_list.ymin, pat_list.ymax) pos_list = density_filter(pos_list, pat_list, density, dist) print("Num of Selectable Position: ", len(pos_list)) for i in range(tmp_num): tmp_max = tmp_max_list[i] e = Evaluater(hospital_list, pat_list, total_capacity, window_size, [tmp_max], huff, method) pos, v = search_best_place(pos_list, e) pos_list.sort(key=lambda p: p.val, reverse=True) result_pos.append(pos) new_h = Hospital("Tmp-" + str(i), pos.x, pos.y, tmp_max) hospital_list.append(new_h) del e print "\nResult:" print v[0] print "\nPosition:" for i in range(len(result_pos)): print "%f, %f" % (result_pos[i].x, result_pos[i].y)
def getFileList(self, hospitalName): if hospitalName not in self.hospitalNameList: fileList = [] self.logger.info('Hospital [ %5s ] does not exist' % (hospitalName)) else: if hospitalName not in self.hospitalClassDict: self.hospitalClassDict[hospitalName] = Hospital(hospitalName) fileList = self.hospitalClassDict[hospitalName].getFileList() self.logger.info(fileList) return fileList
def getOutputFeature(self, hospitalName, filename): if hospitalName not in self.hospitalNameList: feature = [] self.logger.info('Hospital [ %5s ] does not exist' % (hospitalName)) else: if hospitalName not in self.hospitalClassDict: self.hospitalClassDict[hospitalName] = Hospital(hospitalName) feature = self.hospitalClassDict[hospitalName].getOutputFeature( filename) self.logger.info(feature) return feature
def addHospital(self, hospitalName): if hospitalName not in self.hospitalNameList: self.hospitalNameList.append(hospitalName) self.hospitalClassDict[hospitalName] = Hospital(hospitalName) if not os.path.exists(os.path.join(self.mdl_dir, hospitalName)): os.makedirs(os.path.join(self.mdl_dir, hospitalName)) msg = 'Add new hospital [ %5s ]' % (hospitalName) else: msg = 'Hospital [ %5s ] in the list' % (hospitalName) self.logger.info(msg) return msg
def getModelList(self, hospitalName, filename): if hospitalName not in self.hospitalNameList: modelList = [] self.logger.info('Hospital [ %5s ] does not exist' % (hospitalName)) else: if hospitalName not in self.hospitalClassDict: self.hospitalClassDict[hospitalName] = Hospital(hospitalName) modelList = self.hospitalClassDict[hospitalName].getModelList( filename) self.logger.info(modelList) return modelList
def addFile(self, hospitalName, filename): if hospitalName not in self.hospitalNameList: # ERROR msg = 'Hospital [ %5s ] does not exist' % (hospitalName) else: if hospitalName not in self.hospitalClassDict: self.hospitalClassDict[hospitalName] = Hospital(hospitalName) msg = self.hospitalClassDict[hospitalName].addFile(filename) # add to training manager self.tm.addTask() self.logger.info(msg) return msg
def editarHospitalesGenerativo(individuo): # gerar um aleatório entre 0 e 3 para saber quantos hospitais serão criados randomGenerative = rand.randint(1, 3) city = individuo[0].city #gera os datos aleatorios de os novos hospitais for i in range(randomGenerative): x1 = rand.randint(0, city.width - 1) y1 = rand.randint(0, city.height - 1) range1 = rand.randint(0, 3) individuo.append(Hospital(x1, y1, range1, city)) return individuo
def myinput(mylist): num = 0 while True: num = num + 1 print("<" + str(num) + '번째 입력>') num = int(input('번호 :')) code = input('진료코드:') ibwonilsu = int(input('입원일수:')) age = int(input('나이 :')) a = Hospital(num, code, ibwonilsu, age) mylist.append(a) i_o = input('Again(i/o) ? :') if i_o.upper() == 'I': continue else: break
def main(): hospital = Hospital() peoples = Peoples(hospital) canvas = Canvas(peoples) canvas.peoples.init() # 初始化感染者 def run(time): lock = RLock() canvas.peoples.run(time, lock) canvas.run(time, lock) return 0 ani = animation.FuncAnimation(fig=canvas.fig, func=run, repeat=False) plt.show()
def __init__(self, h_list, p_list, t_cap, w_size, t_max_list, huff, allocate_method): self.h_list = h_list self.p_list = p_list self.t_cap = t_cap self.w_size = w_size self.huff = huff self.allocate_method = allocate_method self.t_list = [ Hospital("Tmp-" + str(i), -1, -1, t_max_list[i]) for i in range(len(t_max_list)) ] self.a_list = self.h_list + self.t_list self.a_mapping = {a: i for i, a in enumerate(self.a_list)} self.counter = 0 pass
def random_hospitals(meanNumHospitals, meanHospitalRange, city, numHospitalsStandardDeviation, hospitalRangeStandardDeviation): numHospitals = random.randint( meanNumHospitals - hospitalRangeStandardDeviation, meanNumHospitals + hospitalRangeStandardDeviation) random_hospitals = [] while len(random_hospitals) < numHospitals: x = random.randint(0, city.width - 1) y = random.randint(0, city.height - 1) d = random.randint( max(meanHospitalRange - hospitalRangeStandardDeviation, 0), meanHospitalRange + hospitalRangeStandardDeviation) random_hospitals.append(Hospital(x, y, d, city)) return random_hospitals
def create_hospitals(): all_hospitals = [] for j in range(NUM_HOSPITALS): locations_x = [] locations_y = [] hospital_location_x = randint(10, MAX_LOCATION) hospital_location_y = randint(10, MAX_LOCATION) while (hospital_location_x in locations_x and hospital_location_y in locations_y): hospital_location_x = randint(10, MAX_LOCATION) hospital_location_y = randint(10, MAX_LOCATION) all_hospitals.append( Hospital(j, NUM_BEDS_PER_HOSPITAL, [hospital_location_x, hospital_location_y])) return all_hospitals
def generative(individual, meanReach, reachStandardDeviation): ''' Gera um novo gene no cromossomo :param individual: O cromossomo a ser mutado :return: O cromossomo mutado ''' individuo_copy = individual.copy() randomGenerative = rand.randint(1, 3) city = individual[0].city for _ in range(randomGenerative): x1 = rand.randint(0, city.width - 1) y1 = rand.randint(0, city.height - 1) range1 = rand.randint(meanReach - reachStandardDeviation, meanReach + reachStandardDeviation) individuo_copy.append(Hospital(x1, y1, range1, city)) return individuo_copy
def __init__(self, comm_row, comm_column, populations, initial_infections, comm_size=500): # constants self.FPS = 60 self.CONTAGIOUS_RADIUS = 15 self.CONTAGIOUS_RATE = 1 self.LEAST_INFECTED_TIME = 3 self.CURE_RATE = 0.07 self.CURE_RATE_PER_FRAME = 1 - pow(1 - self.CURE_RATE, 1/self.FPS) self.DEAD_RATE = 0.03 self.DEAD_RATE_PER_FRAME = 1 - pow(1 - self.DEAD_RATE, 1/self.FPS) self.SCAN_PER_FRAME = 3 # objects self.comm_row = comm_row self.comm_column = comm_column self.communities = [Community(self, size=comm_size, population=populations[i], initial_infection=initial_infections[i]) for i in range(comm_row*comm_column)] self.hospital = Hospital() # people variable self.people = [] self.data = []
def init(): ORIGINAL_COUNT = 50 # 初始感染数量 BROAD_RATE = 0.7 # 传播率 SHADOW_TIME = 14 # 平均潜伏时间 HOSPITAL_RECEIVE_TIME = 3 # 平均医院收治时间 CURE_TIME = 14 # 平均治疗时间 DEATH_RATE = 0.01 / CURE_TIME # 每日死亡概率 BED_COUNT = 1000 # 医院床位 SAFETY_DIST = 15 # 安全距离 FLUCTUATION = 4 # 各参数与平均值之间的波动(高斯函数标准差) u = np.exp(1) # 流动意向 PERSON_COUNT = 5000 # 城市内人数 city = City(0, 0) pool = PeoplePool(PERSON_COUNT, city, BROAD_RATE, DEATH_RATE, SHADOW_TIME, \ HOSPITAL_RECEIVE_TIME, CURE_TIME, SAFETY_DIST, u, FLUCTUATION) hos = Hospital(BED_COUNT) for i in range(ORIGINAL_COUNT): idx = np.random.randint(0, PERSON_COUNT) pool.peoples[idx].status = 1 pool.peoples[idx].infected_time = 0 return city, pool, hos
''' Esse arquivo deve ser o principal de nosso algoritmo. Um orquestrador para a realização dos processos durante a iteração. Processos: - Geração da população inicial - Teste do critério de parada - Caso nossos hospitais estejam cobrindo uma região aceitável / atendendo o número de pessoas suficiente -> Parar a execução -> emitir a resposta obtida - Caso o critério ainda não seja satisfeito -> segue a execução - Seleção para a reprodução - Reprodução sexuada / assexuada (crossover / clone) - Seleção para mutação - Mutação - Nova geração - Repete o procedimento ''' city = City(100, 100) h1 = Hospital(23, 34, 3, city) h2 = Hospital(16, 34, 2, city) h3 = Hospital(1, 1, 10, city) h4 = Hospital(50, 34, 2, city) h5 = Hospital(40, 90, 1, city) h6 = Hospital(3, 3, 5, city) h7 = Hospital(20, 80, 3, city) # Geração de individuo aleatório # random_hospitals = random_initializer.random_hospitals(5, 2, city, 2, 1) # for hospital in random_hospitals: # print("x: " + str(hospital.x) + ", y: " + str(hospital.y) + ", range: " + str(hospital.range)) # Geração de soluções (individuos) aleatórias # random_population = random_initializer.random_population(10, 5, 2, city, 2, 1) # i = 1
from hospital import Hospital hospital = Hospital() hospital.start()
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')
from hospital import Hospital paciente = Hospital() def main(): menu = ' ' while menu != 'F': menu = input( "Digite 'C' - casdastro, 'O' - Operar, 'V'- Ver fila e 'F'- Finalizar : " ).upper() print() if menu == 'C': nome = input("Digite o nome: ") telefone = int(input("Digite o telefone: ")) gu = int(input("Digite o grau de Urgência: ")) paciente.inserirPaciente({ "name": nome, "phone": telefone, "du": gu }) if paciente.tamanhoFila() > 1: paciente.sorted() elif menu == 'V': print(paciente.getFila()) elif menu == 'O': print("Próximo paciente: ", paciente.pacienteOp()) paciente.operarPaciente()
ORIGINAL_NUM = 50 #初始感染数量 BROAD_RATE = 0.7 #传播率 SHADOW_TIME = 24 #潜伏时间 最新数据潜伏期可长达24天 HOSPITAL_RECEIVE_TIME = 3 #医院收治响应时间 CURE_TIME = 14 #治疗时间 BED_NUM = 1000 #医院床位 SAFETY_DIST = 15 #安全距离 u = np.exp(-0.99) #流动意向平均值 几乎不动 PERSON_NUM = 5000 #城市内人数 city = City(0, 0) # def __init__(self,city,u,people_num,BROAD_RATE,SHADOW_TIME,HOSPITAL_RECEIVE_TIME,CURE_TIME,SAFETY_DIST): pool = PeoplePool(city, u, PERSON_NUM, BROAD_RATE, SHADOW_TIME, HOSPITAL_RECEIVE_TIME, CURE_TIME, SAFETY_DIST) hospital = Hospital(BED_NUM) # 随机选择初始感染者 for i in range(ORIGINAL_NUM): idx = np.random.randint(0, PERSON_NUM) pool.people[idx].status = 1 pool.people[idx].infected_time = 0 color_person = ['white', 'yellow', 'red', 'black'] # 正常, 潜伏, 确诊感染, 住院 color_bed = ['red', 'black'] # 0 感染者入住 , 1空床位 fig = plt.figure(figsize=(20, 10)) plt.style.use('dark_background') fig.patch.set_facecolor('black')
def teste_novo_hospital(self): hospital = Hospital(001, 'Santa Casa', 'Av. Pelinca') hospital.obter_codigo() | should | equal_to(001) hospital.obter_nome() | should | equal_to('Santa Casa') hospital.obter_endereco() | should | equal_to('Av. Pelinca')
COLORS = ['g', 'gold', 'tab:orange', 'r', 'blue', 'k'] INFECTIONRAD = 100 # HOMEKIT = True SHOW = True WRITE = True allpersons = [] # positions = [] plots = [] notinfected = [] infected = [] recovered = [] dead = [] hospital = Hospital(XAXIS // 2 + DIVIDERWIDTH, XAXIS) scatter, fig, outsideText, insideText, noninfText, infectedText, curedText, deadText = [ None for i in range(8) ] ''' call everyone's step() ''' # TODO check if this can be done more effitiently inside stepScene # it prolly can def stepAll(): for person in allpersons: person.step()
def setUp(self): self.hospital1 = Hospital("santa casa", "123456", "Rua Ips")
def main(): # algorithm arguments init step = 0.001 # evaluator arguments init total_capacity = 3000 window_size = 3 tmp_num = 2 tmp_max_list = [90] * tmp_num method = "DP" # huff arguments init alpha = 1 beta = 1 ignore_prob = 0.01 reachable_dist = 0.02 huff = Huff(alpha, beta, reachable_dist, ignore_prob) # file name patient_filename = sys.argv[1] hospital_filename = sys.argv[2] # build hospital list hospital_list = HospitalList() hospital_list.read_file(hospital_filename) pat_list = PatientList() pat_list.read_file(patient_filename) pos_list = get_init_pos_list((pat_list.xmin, pat_list.xmax), (pat_list.ymin, pat_list.ymax), step) pos_list.set_range(pat_list.xmin, pat_list.xmax, pat_list.ymin, pat_list.ymax) pos_list = density_sorter(pos_list, pat_list) tmp_list = [] result_list = [] p_list = [] for ar in range(0, 50 + 1): arr = 0.002 * ar for i, pos in enumerate(pos_list): if no_hospital_around(pos, hospital_list + tmp_list, arr): new_h = Hospital("Tmp-" + str(i), pos.x, pos.y, tmp_max_list[0]) tmp_list.append(new_h) if len(tmp_list) == tmp_num: break e = Evaluater(hospital_list, pat_list, total_capacity, window_size, tmp_max_list, huff, method) r = e.eval_greedy_opt([t for t in tmp_list]) p_list.append([(t.x, t.y) for t in tmp_list]) del e result_list.append(r) value = max(result_list) index = result_list.index(value) print "\nResult:" print value[0] print "\nPosition:" for i in range(len(p_list[index])): print "%f, %f" % p_list[index][i]
from hospital import Hospital from patient import Patient # creating 6 instances of Patient class p1 = Patient("Vitalie", "No allergies") p2 = Patient("Diana", "No allergies") p3 = Patient("Galina", "Yes") p4 = Patient("Nicolae", "Yes") p5 = Patient("Ion", "No allergies") p6 = Patient("Olivia", "Yes") # Create the hospital giving it a name and a capacity hospital1 = Hospital("Braga", 5) # Admiting the patients into the hospital hospital1.admit(p1) hospital1.admit(p2) hospital1.admit(p3) hospital1.admit(p4) hospital1.admit(p5) hospital1.admit( p6 ) # this patient will receive a message that hospital is full (capacity = 5) and will not be admited to it. print # Discharge a patient by his name and setting it's bed attribute to None, but he still keeps his ID in case he returns. hospital1.discharge("Galina") print # When the patient is discharged he gives the bed back to be reused by new patients. hospital1.discharge("Nicolae") print hospital1.admit( p3
from patient import Patient from hospital import Hospital nick = Patient(1, "Nick", "Sulfa Drugs") lindsey = Patient(2, "Lindsey", "None") mary = Patient(3, "Mary", "Peanuts") ryan = Patient(4, "Ryan", "None") penn_hospital = Hospital("Pennsylvania Hospital", 3) penn_hospital.admit(nick).admit(lindsey).admit(mary).admit(ryan) print "-- take one ---" print penn_hospital penn_hospital.discharge(nick).admit(ryan) print "-- take two ---" print penn_hospital
from mathdojo import MathDojo from hospital import Patient from hospital import Hospital from car import Car from callcenter import Call from callcenter import CallCenter from bike import Bike from animals import Animal from animals import Dog from animals import Dragon md = MathDojo(0) print md hosp = Hospital("Great Hospital", 6) print hosp patient = Patient(1, "Bob") print patient car = Car(5000, "75mph", "Full", "25mpg") print car call = Call(1, "Stephen", "770-789-7038", 8.30, "For Fun") print call call_center = CallCenter() print call_center bike = Bike(150, "15mph") print bike fox = Animal("Fox") print fox pitbull = Dog("Pitbull") print pitbull trogdor = Dragon("Trogdor the Burninator") print trogdor
doctor3 = Doctor('Dr.', 'Greta Koopmann', ['general', 'orthopedist'], '+49 169 05251 2222', calendar.afternoon) doctor4 = Doctor('Dr.', 'Christian Gösling', ['general', 'neurologist'], '+49 169 05251 3333', calendar.morning) doctor5 = Doctor('Dr.', 'Viktor Kratchnisky', ['general', 'emergency_doc'], '+49 169 05251 4444', calendar.morning + calendar.afternoon) return [doctor1, doctor2, doctor3, doctor4, doctor5] #Data for hospital 2 name = 'St_Johannes_Hospital' free_rooms = 75 id = 'mel_hosp2' coordinates = [51.51,7.45] # Dortmund doctors = create_doctors() hospital = Hospital(name, free_rooms, id, coordinates, doctors) hospital.loop()