コード例 #1
0
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")
コード例 #2
0
 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()
コード例 #3
0
ファイル: teste.py プロジェクト: EmilianoMV/Laborat-rio-OO
 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")])
コード例 #4
0
ファイル: teste.py プロジェクト: EmilianoMV/Laborat-rio-OO
 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")] ]) 
コード例 #5
0
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
コード例 #6
0
ファイル: teste.py プロジェクト: EmilianoMV/Laborat-rio-OO
 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")])  
コード例 #7
0
ファイル: main.py プロジェクト: y1han/epidemic-simulation
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
コード例 #8
0
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()
コード例 #9
0
ファイル: greedy.py プロジェクト: sidk3jdmw/ICDM2016
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)
コード例 #10
0
 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
コード例 #11
0
 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
コード例 #12
0
    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
コード例 #13
0
 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
コード例 #14
0
 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
コード例 #15
0
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
コード例 #16
0
ファイル: input.py プロジェクト: Highjune/Python
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
コード例 #17
0
ファイル: main.py プロジェクト: Latiest/cov19
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()
コード例 #18
0
 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
コード例 #19
0
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
コード例 #20
0
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
コード例 #21
0
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
コード例 #22
0
    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 = []
コード例 #23
0
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
コード例 #24
0
    '''
    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
コード例 #25
0
from hospital import Hospital

hospital = Hospital()
hospital.start()
コード例 #26
0
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')
コード例 #27
0
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()
コード例 #28
0
ファイル: main.py プロジェクト: helen9977/Virus_
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')
コード例 #29
0
ファイル: teste.py プロジェクト: aniely/SUS
 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')
コード例 #30
0
ファイル: main.py プロジェクト: Rr9/outbreakAffect
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()
コード例 #31
0
 def setUp(self):
     self.hospital1 = Hospital("santa casa", "123456", "Rua Ips")
コード例 #32
0
ファイル: density.py プロジェクト: sidk3jdmw/ICDM2016
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]
コード例 #33
0
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
コード例 #34
0
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
コード例 #35
0
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
コード例 #36
0
    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()