Ejemplo n.º 1
0
def focus(driver, locator):
    """Sets focus to element identified by `locator`."""
    element_wait(driver,locator)
    target = driver.find_element(locator[0],locator[1])
    driver.execute_script("arguments[0].scrollIntoView();", target)  # 拖动到可见的元素去
    on_click(driver,locator)
    return
Ejemplo n.º 2
0
def calendar(browser, remove_js,focus_js, input_locator,img_locator,date):

    browser.execute_script(remove_js)
    send_value(browser,input_locator,date)
    browser.execute_script(focus_js)
    time.sleep(2)
    on_click(browser, img_locator)
    browser.find_element_by_xpath("//button[contains(text(),'今天')]").send_keys(Keys.ENTER)
Ejemplo n.º 3
0
def select_dept(browser,value,dept_name,locator):
    # print(locator)
    time.sleep(1)
    if window(browser,value):
        on_click(browser,locator)
        focus(browser,(By.XPATH,("//div[contains(text(),'%s')]"%dept_name)))
    else:
        log.info('%s窗口未打开'%value)
Ejemplo n.º 4
0
def click_application(browser, application_type_list, cache):
    for application_type in application_type_list:
        diction = cache.get(application_type)
        if diction:
            application_list = list(diction.keys())
            executive_department_list = list(diction.values())

            for t in list(set(executive_department_list)):
                # 刷卡
                send_value(browser, (By.XPATH, head_button.刷卡),
                           cache.get('patient_card') + '\n')
                # 判断弹出窗口是否正确弹出
                if not is_text(browser,
                               (By.XPATH, application_list_window.申请单列表),
                               '申请单列表'):
                    log.info('没有找到申请单列表窗口')
                    return
                apply_messages = get_text(
                    browser, (By.XPATH, application_list_window.申请单信息))
                if application_type in ['处方单', '毒麻单', '草药']:
                    on_click(browser,
                             (By.XPATH, "//span[contains(text(),'全部药品')]"))
                date = time.strftime("%Y-%m-%d", time.localtime())
                send_value(browser, (By.XPATH, application_list_window.开始时间),
                           '2017-6-12')
                on_click(browser,
                         (By.XPATH, "//button[contains(text(),'查询(Q)')]"))
                first_pos = 0
                status = False  #执行状态
                for i in range(executive_department_list.count(t)):
                    new_list = executive_department_list[first_pos:]
                    next_pos = new_list.index(t) + 1
                    index = first_pos + new_list.index(t)
                    print(application_list[index])
                    first_pos += next_pos
                    locator = (By.XPATH, '//div[contains(text(),"' +
                               application_list[index] + '")]')
                    if application_list[index] in apply_messages:
                        status = True
                        focus(browser, locator)
                    else:
                        log.info('不存在%s申请单' % application_list[index])
                if not status:
                    on_click(browser,
                             (By.XPATH, '//button[contains(text(),"取消(C)")]'))
                    continue
                on_click(browser,
                         (By.XPATH, "//button[contains(text(),'确定(S)')]"))
                time.sleep(0.5)
                send_value(browser, (By.XPATH, body.缴费方式), '\n')
                if get_prompt(browser):
                    on_click(browser,
                             (By.XPATH, "//button[contains(text(),'是')]"))
                    microsoft_xps_document_writer(application_type)
    log.info('欠费记账脚本运行结束')
Ejemplo n.º 5
0
def test_order_sign_list(browser, cache):
    log.info('开始运行内部挂号列表脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"门诊挂号")]'))
    on_click(browser, (By.LINK_TEXT, '内部挂号列表'))
    # send_value(browser,(By.XPATH,head_button.查询条件),cache['name'])
    special_element = browser.find_element(By.XPATH, body.号源列表)
    if '没有可显示的数据....' in special_element.text:
        log.info('内部挂号没有号源信息')
        return
    locator = (By.XPATH, body.号源列表 + '/div')
    list_messages = cache['business_type']
    if not list_messages:
        log.info('内部挂号没有号源信息')
        return
    for list_message in list_messages:
        boolen = select_lists(browser, locator, list_message)
        if boolen:
            if boolen[0] == '留号':
                index = 12
            if boolen[0] == '加号':
                index = 13
            if boolen and boolen[index] == '未取号':
                on_click(browser,
                         (By.XPATH, '//button[contains(text(),"取消预约")]'))
                on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
        else:
            log.info('内部挂号列表验证fail')
            return
Ejemplo n.º 6
0
def select_lists(browser,locator,list_message):
    element_wait(browser,locator)
    elements =  browser.find_elements(locator[0],locator[1])
    for i in range(0, len(elements)):
        message_elements = browser.find_elements(locator[0],locator[1])[i]
        texts = (message_elements.text).split()

        boolen = fun(list_message,texts)
        if boolen:
            locator = (locator[0], locator[1] + str([i + 1]) + '//div')
            print(locator)
            on_click(browser, locator)
            return texts
    return False
Ejemplo n.º 7
0
def test_invoice_print_again(browser, cache):
    log.info('开始运行发票重打脚本')
    if not invoice_record_query(browser, cache):
        return
    consume_collection = get_text(browser,
                                  (By.XPATH, invoice_history_list.发票记录))
    mechanism_numbe = find_mechanism_numbe(cache.get('rek_no_list'))
    print(mechanism_numbe)
    if mechanism_numbe and (mechanism_numbe[0] in consume_collection):
        on_click(browser,
                 (By.XPATH, '//div[contains(text(),"%s")]' % mechanism_numbe))
        on_click(browser, (By.XPATH, "//button[contains(text(),'重打')]"))
        microsoft_xps_document_writer('票据重打单')
    else:
        log.info('没有找到机制号')
    log.info('发票重打脚本运行结束')
def test_plus_sign(browser, testcase, cache):
    log.info('开始运行加号脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"门诊挂号")]'))
    on_click(browser, (By.LINK_TEXT, '加号'))
    # 调取挂号验证模板
    RegSource = dao.outp_regist_master(testcase)
    temp.outp_reg_source_temp(RegSource)
    current_no = RegSource.OutpRegMaster.current_no
    current_limits = RegSource.OutpRegMaster.current_limits
    #刷卡
    send_value(browser, (By.XPATH, PlusSignInput.swipe_card),
               (testcase[plus_sign['patient_card']] + '\n'))
    #输入科室名称进行过滤
    num = len(
        browser.find_elements(By.XPATH, PlusSignDiv.special_list + '//tr'))
    send_value(browser, (By.XPATH, PlusSignInput.doctor_name),
               testcase[plus_sign['doctor_name']])
    locator = (By.XPATH, PlusSignDiv.special_list + '//tr')
    list_message = [testcase[plus_sign['special_name']]]
    if not filter_lists(browser, locator, list_message, num, 'button'):
        log.info('没有号源信息')
        return
    on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
    #判断提示框中的内容是否正确
    if get_prompt(browser):
        prompt_text = get_prompt(browser)
        on_click(browser, (By.XPATH, '//button[contains(text(),"确定"   )]'))
    else:
        browser.refresh()
    # 调取挂号验证模板
    RegSourceAfter = dao.outp_regist_master(testcase)
    temp.outp_reg_source_temp(RegSourceAfter)
    # 数据验证
    if RegSourceAfter.OutpRegMaster.current_no - current_no == 0 and current_limits - RegSourceAfter.OutpRegMaster.current_limits == 0:
        Utility.writeFile('当前号和已挂数  pass')
    else:
        Utility.writeFile('当前号和已挂数  fail')
    business_type = cache.get('business_type')
    if not business_type:
        cache.set('business_type', [[
            '加号', testcase[plus_sign['name']],
            testcase[plus_sign['special_name']],
            testcase[plus_sign['outp_time']],
            testcase[plus_sign['doctor_name']]
        ]])
    else:
        business_type.append([
            '加号', testcase[plus_sign['name']],
            testcase[plus_sign['special_name']],
            testcase[plus_sign['outp_time']],
            testcase[plus_sign['doctor_name']]
        ])
    log.info('挂号留号运行结束')
Ejemplo n.º 9
0
def pds_emr(browser,list,pdsList,cache):
    on_click(browser, (By.XPATH, CpoeOutOrderElement.input[9]['key']))
    js = "document.getElementsByTagName('img')[54].click()"
    browser.execute_script(js)

    # tyElement = browser.find_element_by_xpath(
    #     str(CpoeOutOrderElement.select[3]['key']) + 'div[' + str(list[0]) + ']')
    # tyElement.click()
    on_click(browser, (By.XPATH, '//div[contains(text(),"药疗")]'))
    pdsNameElement1 = browser.find_element_by_xpath(CpoeOutOrderElement.input[9]['key'])
    pdsNameElement1.send_keys(list[1])
    time.sleep(1.5)
    pdsNameElement1.send_keys(Keys.ENTER)
    if list[2] == 1:
        takeMedicineElement = browser.find_element_by_xpath(CpoeOutOrderElement.input[3]['key'])
        takeMedicineElement.click()
    time.sleep(1.5)
    useLevelElement = browser.find_element_by_xpath(CpoeOutOrderElement.input[10]['key'])
    useLevelElement.send_keys(list[3])
    #途径
    send_value(browser,(By.XPATH,'/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[8]/div[3]/div/div[1]/div/input'),'口服')
    time.sleep(1.5)
    browser.find_element_by_xpath('/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[8]/div[3]/div/div[1]/div/input').send_keys(Keys.ENTER)
    #频次
    js = "document.getElementsByTagName('img')[58].click()"
    browser.execute_script(js)
    time.sleep(1.5)
    browser.find_element_by_xpath(
        '/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[8]/div[4]/div/div[1]/div/input').send_keys(
        Keys.ENTER)
    #疗程
    send_value(browser, (By.XPATH,
                         '/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[8]/div[6]/div/div[1]/div/input'),
               '1')
    browser.find_element_by_xpath(
        '/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[1]/div[2]/div[1]/div/div[5]/div/div[1]/div/input').send_keys(
        Keys.ENTER)
    time.sleep(1.5)
    js = "document.getElementsByTagName('button')[13].click()"
    browser.execute_script(js)
    cache.set('actionDepartment', '门诊药房')
    listUrl = '医嘱'
    Utility.microsoft_xps_document_writer(listUrl)
def get_sign(browser, testcase):
    #刷卡
    locator = (By.XPATH, body.卡号)
    send_value(browser, locator, testcase[plus_sign['patient_card']] + '\n')
    on_click(browser, (By.XPATH, '//button[text()="否"]'))
    #获取号源列表
    special_list = browser.find_element(By.XPATH, body.号源列表)
    if '没有可显示的数据....' in special_list.text:
        log.info('没有加号信息')
        return
    locator = (By.XPATH, body.号源列表 + '//tr')
    list_message = [
        testcase[plus_sign['special_name']], testcase[plus_sign['doctor_name']]
    ]
    if not select_lists(browser, locator, list_message):
        log.info('没有号源信息')
        return
    locator = (By.XPATH, '//button[text()="取        号"]')
    on_click(browser, locator)
    Utility.microsoft_xps_document_writer('挂号单')
Ejemplo n.º 11
0
def invoice_record_query(browser, cache):
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"发票打印管理")]'))
    on_click(browser, (By.LINK_TEXT, '发票记录查询'))
    if element_wait(browser,
                    (By.XPATH, '//span[contains(text(),"验证最小票据号窗口")]')):
        usename = get_text(browser, (By.XPATH, head.用户)).split('(')[0]
        bill_num = find_min_ticket(usename, '门诊收费发票')
        send_value(browser, (By.XPATH, verify_bill_window.票据号),
                   bill_num)  #输入票据号
        on_click(browser, (By.XPATH, verify_bill_window.确定))
        send_value(browser, (By.XPATH, query_area.刷卡),
                   cache.get('patient_card') + '\n')
        end_time = time.time() + 1
        while True:
            consume_collection = get_text(
                browser, (By.XPATH, invoice_history_list.发票记录))
            if consume_collection != '暂无可显示票据记录...':
                break
            if time.time() > end_time:
                log.info('加载消费单失败')
                break
        return True
    else:
        log.info('验证最小票据号窗口弹出异常')
        return False
Ejemplo n.º 12
0
def test_repair_reg(browser, testcase, cache):
    log.info('开始运行补打挂号单脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"门诊挂号")]'))
    on_click(browser, (By.LINK_TEXT, '补打挂号单'))

    #刷卡
    for i in range(0, 3):
        send_value(browser, (By.XPATH, head_button.就诊卡号),
                   testcase[repair_reg['patient_card']] + '\n')
        locator = (By.XPATH, repair_reg_body.号源列表 + '//tr')
        num = len(browser.find_elements(locator[0], locator[1]))  # 号源列表的数量
        send_value(browser, (By.XPATH, head_button.查询条件),
                   testcase[repair_reg['doctor_name']])
        list_message = [
            testcase[repair_reg['special_name']],
            testcase[repair_reg['special_type']],
            testcase[repair_reg['outp_time']]
        ]
        boolen = filter_lists(browser, locator, list_message, num, 'button')
        if not boolen:
            log.info('没有号源信息')
            return
        if boolen[9] == '3' or ('已达次数上限' in boolen):
            if boolen[9] == '3' and ('已达次数上限' in boolen):
                log.info('补打挂号单验证pass')
                break
            else:
                log.info('补打挂号单验证fail')
                break
        on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
        Utility.microsoft_xps_document_writer('补打挂号单')
    log.info('补打挂号单脚本运行结束')
def test_get_leave_sign(browser, testcase, cache):
    log.info('开始运行取留号脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"门诊挂号")]'))
    on_click(browser, (By.LINK_TEXT, '取留号'))
    # 调取挂号验证模板
    Fee = dao.outp_balance(testcase)
    temp.outp_fee_temp(Fee)
    RegSource = dao.outp_regist_master(testcase)
    temp.outp_reg_source_temp(RegSource)
    OfficeRegSource = dao.outp_patient_visit(testcase)
    temp.outp_office_reg_source_temp(OfficeRegSource)
    balance = Fee.PcaPrepayAccountMaster.balance
    current_no = RegSource.OutpRegMaster.current_no
    current_limits = RegSource.OutpRegMaster.current_limits
    get_sign(browser, testcase)
    # 调取挂号验证模板
    FeeAfter = dao.outp_balance(testcase)
    temp.outp_fee_temp(FeeAfter)
    RegSourceAfter = dao.outp_regist_master(testcase)
    temp.outp_reg_source_temp(RegSourceAfter)
    OfficeRegSourceAfter = dao.outp_patient_visit(testcase)
    temp.outp_office_reg_source_temp(OfficeRegSourceAfter)

    # 数据验证
    if (balance - FeeAfter.PcaPrepayAccountMaster.balance
        ) == testcase[leave_sign['regist_fee']]:
        Utility.writeFile('患者挂号扣费  pass')
    else:
        Utility.writeFile('患者挂号扣费  fail')
    if RegSourceAfter.OutpRegMaster.current_no - current_no == 0 and current_limits - RegSourceAfter.OutpRegMaster.current_limits == 0:
        Utility.writeFile('当前号和已挂数  pass')
    else:
        Utility.writeFile('当前号和已挂数  fail')
    if OfficeRegSourceAfter[0] - OfficeRegSource[0] == 1:
        Utility.writeFile('门办已挂数  pass')
    else:
        Utility.writeFile('门办已挂数  fail')
    log.info('取留号脚本运行结束')
Ejemplo n.º 14
0
def filter_lists(browser,locator,list_message,num,tab):
    end_time = time.time() + 1
    while True:
        if len( browser.find_elements(locator[0],locator[1]))<num:
            break
        if time.time()>end_time:
            break
        time.sleep(0.5)
    special_elements = browser.find_elements(locator[0],locator[1])
    for i in range(0, len(special_elements)):
        special_message_elements = browser.find_elements(locator[0],locator[1])[i]
        texts = (special_message_elements.text).split()
        print(texts)
        boolen = fun(list_message,texts)
        if ('已达次数上限' in texts ) or texts[9] == '3':
            return texts
        if boolen:
            locator = (locator[0], locator[1] + str([i + 1]) + '//'+tab)
            on_click(browser, locator)
            return texts
        else:
            texts = []
    return False
Ejemplo n.º 15
0
def test_quit_sign_list(browser, cache):
    log.info('开始运行退号信息列表脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"门诊挂号")]'))
    on_click(browser, (By.LINK_TEXT, '退号信息列表'))
    remove_js = 'document.getElementsByTagName("input")[26].removeAttribute("readonly")'
    focus_js = "document.getElementsByTagName('input')[26].blur()"
    input_locator = (By.XPATH, head_button.退号开始日期)
    img_locator = (By.XPATH, head_button.退号开始日历)
    date = time.strftime("%Y-%m-%d", time.localtime())
    calendar(browser, remove_js, focus_js, input_locator, img_locator, date)
    on_click(browser, (By.XPATH, '//button[contains(text(),"查询")]'))
    if select_lists(browser, (By.XPATH, body.号源列表), cache.get('quit_sign')):
        log.info('退号列表显示pass')
    else:
        log.info('退号列表显示pass')
    log.info('退号信息列表脚本运行结束')
Ejemplo n.º 16
0
def test_prepay(browser,cache):
    log.info('开始运行预付费缴费脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser,(By.XPATH,'//div[contains(text(),"门诊缴费管理")]'))
    on_click(browser,(By.LINK_TEXT,'预付费缴费'))
    boolen = get_prompt(browser)
    if  boolen:
        if re.sub('\D', '', boolen) == '0':
           log.info(boolen)
           return
        else:
           on_click(browser, (By.XPATH, "//button[contains(text(),'确定')]"))

    lists = ['处方单', '毒麻单', '检查单', '检验单', '治疗单', '皮试单', '输液单', '草药', '病理类']
    click_application(browser,lists,cache)
    # 收费状态
    cache.set('prepay_status',1)
Ejemplo n.º 17
0
def test_invoice_print(browser, cache):
    log.info('开始运行发票打印脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"发票打印管理")]'))
    on_click(browser, (By.LINK_TEXT, '发票打印'))
    if element_wait(browser,
                    (By.XPATH, '//span[contains(text(),"验证最小票据号窗口")]')):
        usename = get_text(browser, (By.XPATH, head.用户)).split('(')[0]
        bill_num = find_min_ticket(usename, '门诊收费发票')
        send_value(browser, (By.XPATH, verify_bill_window.票据号),
                   bill_num)  #输入票据号
        on_click(browser, (By.XPATH, verify_bill_window.确定))
        send_value(browser, (By.XPATH, query_area.刷卡),
                   cache.get('patient_card') + '\n')
        lists = ['处方单', '毒麻单', '检查单', '检验单', '治疗单', '皮试单', '输液单', '草药', '病理类']
        rek_no_list = []
        for list_type in lists:
            applys = cache.get(list_type)
            if applys == None:
                continue
            for apply_id in list(applys.keys()):
                result = find_rek_no(apply_id)
                if result != []:
                    rek_no_list.append(result.Rek.rek_no)
                else:
                    log.info('%s申请单未收费或已退费' % apply_id)
        end_time = time.time() + 1
        while True:
            consume_collection = get_text(browser,
                                          (By.XPATH, consume_list.消费记录))
            if consume_collection != '查询暂无结算消费记录':
                break
            if time.time() > end_time:
                log.info('加载消费单失败')
                break
        # print(rek_no_list)
        if rek_no_list == []:
            log.info('没有需要打印的单据')
            return
        status = False
        reks = []
        for rek_no in rek_no_list:
            if rek_no in consume_collection:
                focus(browser,
                      (By.XPATH, '//div[contains(text(),"%s")]' % rek_no))
                reks.append(rek_no)
                status = True
            else:
                log.info('%s消费单不存在或已作废' % rek_no)
        cache.set('rek_no_list', reks)
        if status:
            for rek_no in rek_no_list:
                end_time = time.time() + 1
                while True:
                    if rek_no in get_text(
                            browser, (By.XPATH, application_detail_list.费用明细)):
                        break
                    if time.time() > end_time:
                        log.info('加载消费明细失败')
                        break
            on_click(browser, (By.XPATH, '//button[contains(text(),"打印")]'))
            on_click(browser, (By.XPATH, '//button[contains(text(),"确 定")]'))
            on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
            microsoft_xps_document_writer('发票单')
    else:
        log.info('验证最小票据号窗口弹出异常')
    log.info('发票打印脚本运行结束')
Ejemplo n.º 18
0
def test_emr_ers(browser, test_case, cache):

    # 判断门诊医生站是否打开
    login.select_workstation(browser, '门诊医生站', cache)
    # 进入医嘱开立界面

    browser.find_element_by_xpath(CpoeOutOrderElement.div[4]['key']).click()
    time.sleep(2)
    elements = browser.find_elements_by_tag_name('a')
    for element in elements:
        if element.text == '门诊医嘱开立':
            element.click()
            break
    # browser.find_element_by_xpath(CpoeOutOrderElement.a[1]['key'])
    browser.find_element_by_xpath(
        CpoeOutOrderElement.input[12]['key']).send_keys(
            str(cache.get('patient_card')) + '\n')
    time.sleep(2)
    browser.find_element_by_xpath(CpoeOutOrderElement.input[12]['key']).click()
    #获取测试用例
    ers_cpoe_list = test_case

    #将多部位分装为集合
    ers_combin_part_list = ers_cpoe_list[
        Code.ers_cpoe_table['ers_combin_part']]

    ers_part = ers_cpoe_list[Code.ers_cpoe_table['ers_part']]
    ers_part_list = str(ers_part).split(',')

    #获取检查医嘱按钮区域
    ers_cpoe_area = ErsCpoeElement.div[0]['key']

    #检查项目录入区域
    ers_item_area = ErsCpoeElement.div[1]['key']

    #检查执行科室区域
    ers_execute_area = ErsCpoeElement.div[2]['key']

    #检查项目基本信息
    ers_base_message_area = ErsCpoeElement.fieldset[0]['key']

    #部位或方法组
    ers_combin_part_area = ErsCpoeElement.fieldset[1]['key']

    #部位或方法
    ers_part_area = ErsCpoeElement.fieldset[2]['key']

    #附加项目
    ers_add_item_area = ErsCpoeElement.fieldset[3]['key']

    #保存
    ers_save = ErsCpoeElement.table[0]['key']

    #执行科室列表
    ers_execute_list = ErsCpoeElement.div[3]['key']

    # ers_cpoe_button_element = browser.find_element_by_xpath(ers_cpoe_area).find_elements_by_tag_name('button')
    # ers_cpoe_button_element[3].click()
    # time.sleep(2)
    #点击检查按钮
    js = 'document.getElementsByTagName("button")[10].click()'
    browser.execute_script(js)
    ers_cpoe_area_element = browser.find_element_by_xpath(ers_item_area)
    ers_cpoe_input_element = ers_cpoe_area_element.find_elements_by_tag_name(
        'input')
    ers_cpoe_input_element[0].send_keys(
        ers_cpoe_list[Code.ers_cpoe_table['cpoe_name']] + '\n')
    time.sleep(1)
    ers_cpoe_name_elements = ers_cpoe_area_element.find_elements_by_tag_name(
        'span')
    num = -1
    for i in range(0, len(ers_cpoe_name_elements)):
        if ers_cpoe_list[Code.ers_cpoe_table[
                'cpoe_name']] == ers_cpoe_name_elements[i].text:
            num = i
    if num == -1:
        raise Exception('该项目不存在')
    else:
        on_click(browser, (By.XPATH, '//span[contains(text(),"%s")]' %
                           ers_cpoe_list[Code.ers_cpoe_table['cpoe_name']]))
    time.sleep(1)
    ers_execute_element = browser.find_element_by_xpath(
        ers_execute_area).find_elements_by_tag_name('input')
    print(ers_execute_element[1].text)
    ers_execute_element[1].clear()
    ers_execute_element[1].send_keys(
        ers_cpoe_list[Code.ers_cpoe_table['execute_depat']])
    time.sleep(1)
    ers_execute_element[1].send_keys(Keys.ENTER)
    # time.sleep(2)
    # execute_list_elements = browser.find_element_by_xpath(ers_execute_list).find_elements_by_tag_name('div')
    # bollen = True
    # for i in range(0,len(execute_list_elements)):
    #     if ers_cpoe_list[Code.ers_cpoe_table['execute_depat']] == execute_list_elements[i].text:
    #         execute_list_elements[i].click()
    #         bollen = False
    #     if i == len(execute_list_elements)-1:
    #         if bollen:raise Exception('没有该执行科室,请配置流向!')

    count = 1
    ers_combin_part_element = browser.find_element_by_xpath(
        ers_combin_part_area).find_elements_by_tag_name('div')
    time.sleep(2)
    for i in range(0, len(ers_combin_part_element)):
        if '无数据' == ers_combin_part_element[i].text:
            print('********')
            count = 0
            browser.find_element_by_xpath(
                "//button[contains(text(),'保存并关闭')]").click()
            cache.set('pai_type', 'o')
            CpoeSubmit.test_cpoe_submit(browser, '检查单')
            return
    if count == 1:
        ers_combin_elements = browser.find_element_by_xpath(
            ers_combin_part_area).find_elements_by_tag_name('label')
        print(len(ers_combin_elements))
        for i in range(0, len(ers_combin_elements)):
            if ers_combin_part_list == ers_combin_elements[i].text:
                ers_combin_elements[i].click()
        time.sleep(1)
        ers_part_elements = browser.find_element_by_xpath(
            ers_part_area).find_elements_by_tag_name('label')
        print(ers_part_list)
        for i in range(0, len(ers_part_elements)):
            for j in range(0, len(ers_part_list)):
                if ers_part_list[j] == ers_part_elements[i].text:
                    ers_part_elements[i].click()
        cache.set('pai_type', 'o')
        button_element = browser.find_element_by_xpath(
            ers_save).find_elements_by_tag_name('button')[1]
        button_element.click()
        CpoeSubmit.test_cpoe_submit(browser, '检查单')
Ejemplo n.º 19
0
def test_businessCard(browser, cache):

    #start login
    login.select_workstation(browser, '基础费用管理', cache)

    # 点击左边菜单
    on_click(browser, (By.XPATH, "//span[contains(text(), '患者信息查询')]"))
    # 点击二级菜单
    on_click(browser, (By.XPATH, "//span[contains(text(), '批量制卡')]"))

    # #清除垃圾数据
    # elements  = browser.find_elements_by_xpath("//button[contains(text(), '生成卡磁道')]")
    # print(len(elements))
    #
    # for i in range(len(elements)):
    #     if len(elements) >= 1:
    #         browser.find_element_by_xpath("//button[contains(text(), '生成卡磁道')]").click()
    #         browser.find_element_by_xpath("//button[contains(text(), '是')]").click()
    #         time.sleep(1)
    #
    #     else:
    #         break
    #
    # time.sleep(2)
    #
    # elements2 = browser.find_elements_by_xpath("//button[contains(text(), '确认')]")
    # print(len(elements2))
    #
    # for i in range(len(elements2)):
    #     if len(elements2) >= 1:
    #         browser.find_element_by_xpath("//button[contains(text(), '确认')]").click()
    #         browser.find_element_by_xpath("//button[contains(text(), '是')]").click()
    #         time.sleep(1)
    #
    #     else:
    #         break

    # 输入预计制卡数量,点击批量生成
    send_value(browser, (By.XPATH, "//input"), '1')
    on_click(browser, (By.XPATH, "//button[contains(text(), '生成批次')]"))

    #获取压缩文件时间,用于匹配压缩文件
    # now = time.strftime("%Y%m%d%H", time.localtime())
    # time.sleep(1)

    # 点击生成磁道
    time.sleep(1)
    browser.find_elements(By.XPATH,
                          "//button[contains(text(), '生成卡磁道')]")[0].click()
    on_click(browser, (By.XPATH, "//button[contains(text(), '是')]"))

    # 点击下载
    time.sleep(2)
    browser.find_elements(By.XPATH,
                          "//button[contains(text(), '下载')]")[0].click()
    on_click(browser, (By.XPATH, "//button[contains(text(), '是')]"))

    # 点击确认
    end_time = time.time() + 500
    time.sleep(2)
    while True:
        time.sleep(1)
        text = get_text(browser, (By.XPATH, '//span'))
        if '提示' not in text:
            print('提示不存在')
            break
        if time.time() > end_time:
            log.info('页面加载超时')
            return

    on_click(browser, (By.XPATH, "//button[contains(text(), '确认')]"))
    on_click(browser, (By.XPATH, "//button[contains(text(), '是')]"))

    # 匹配下载文件
    f = browser.find_element_by_xpath(
        "/html/body/div[1]/div/div[2]/div[1]/div[2]/div[2]/div/div/div[2]/div[2]/div/div[1]/div[1]/div[2]/div/div[1]/table/tbody/tr/td[1]/div"
    )
    fname = f.text  #使用获取页面的批次号来匹配压缩文件

    for i in os.listdir(path.download_dir):  #获取指定下载文件夹所有文件
        if (i.split(".")[0].find(fname)) > 0:  #使用字符串对比匹配到下载文件
            fpath = os.path.join(path.download_dir, i)  #生成解压文件路径
            zip = zipfile.ZipFile(fpath)
            zipname = zip.namelist()  #返回压缩包中所有文件的文件名
            zip.extractall()  #解压所有文件
            zip.close()
            f = open(zipname[0])
            lines = f.readline()
            # print(lines)
            f.close()

            # 拼写制卡卡号
            card = '%E?;' + lines.rstrip('\n').split("|")[1] + '?+E?'
            cache.set('patient_card', card)
            log.info(card)
            Utility.writeFile(card)

            # 删除解压文件
            if os.path.exists(zipname[0]):
                os.remove(zipname[0])
Ejemplo n.º 20
0
def test_reservation_regist(browser,cache):
    #判断检查预约工作站是否打开
    login.select_workstation(browser, '检查预约', cache)
    work_select.select_department(browser,cache)
    browser.find_element_by_xpath(reservation.div[0]['key']).click()
    browser.find_element_by_link_text('预约登记管理').click()
    time.sleep(2)

    apply_list = list(cache['检查单'].keys())

    #选取预约类型(门诊o  住院i)
    reservation_type = reservation.div[1]['key']

    #刷卡
    swip_card = reservation.div[2]['key']

    #是否预约按钮区域
    res_button = reservation.div[3]['key']

    #申请单列表区域
    application_list = reservation.div[4]['key']

    #患者列表区域
    pai_detail = reservation.div[5]['key']

    #申请单明细区域
    application_detail = reservation.div[6]['key']

    # 预约日期区域
    calendar_xpath = reservation.div[7]['key']

    #预约资源明细区域
    res_resource_detail = reservation.div[8]['key']

    #提示框
    prompt = reservation.div[9]['key']

    #确认预约框
    sure_res = reservation.div[10]['key']


    # reservation_type_elements = browser.find_element_by_xpath(reservation_type).find_elements_by_tag_name('button')
    if cache['pai_type'] == 'o':
        browser.find_element_by_link_text('门诊预约').click()
    elif cache['pai_type'] == 'i':
        browser.find_element_by_link_text('住院预约').click()
    swip_card_element = browser.find_element_by_xpath(swip_card).find_elements_by_tag_name('input')
    swip_card_element[0].send_keys(str(cache['userId'])+'\n')
    time.sleep(2)

    #选取申请单
    for apply in apply_list:
        browser.find_element_by_xpath("//div[contains(text(),'"+apply+"')]").click()

        application_list_elements = browser.find_element_by_xpath(application_list).find_elements_by_tag_name('div')

        #预约当前时间最近的且预约人数<可预约人数

        #当前时间
        date = time.strftime("%Y-%m-%d", time.localtime())
        remove_js = "document.getElementsByTagName('input')[16].removeAttribute('readonly')"
        focus_js = "document.getElementsByTagName('input')[16].blur()"
        input_locator = (By.XPATH,calendar_xpath+'//input[1]')
        img_locator = (By.XPATH,calendar_xpath+'//img[1]')
        common.calendar(browser,remove_js,focus_js,input_locator,img_locator,date)
        time.sleep(2)
        now = time.strftime("%Y-%m-%d %H:%M", time.localtime())
        table_elements = browser.find_element_by_xpath(res_resource_detail).find_elements_by_tag_name('table')
        for table_element in table_elements:
           div_elements = table_element.find_elements_by_tag_name('div')
           if div_elements[3].text>now:
               print(div_elements[5].text)
               if div_elements[4].text>div_elements[5].text:
                   div_elements[4].click()
                   break

        browser.find_element_by_xpath("//button[contains(text(),'预约并确认')]").click()
        browser.find_element_by_xpath("//button[contains(text(),'是')]").click()
        # browser.find_element_by_xpath("//button[text()='确认')]").click()
        locator = (By.XPATH,"//button[text()='确认']")
        on_click(browser,locator)
        time.sleep(4)
        url = "检查预约单"
        utility.microsoft_xps_document_writer(url)
Ejemplo n.º 21
0
def test_apply_pharm(browser, cache):
    log.info('开始运行供药脚本')
    # 判断门诊挂号收费工作站是否打开
    login.select_workstation(browser, '药房工作站', cache)

    if int(cache.get('resultType')) != 1:
        return

    # 获取申请单号及执行科室
    application_list = list(cache.get('处方单').keys())
    execute_list = list(set(list(cache.get('处方单').values())))

    # 选取工作站
    workstationElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.button[0]['key'])
    workstationElement.click()
    time.sleep(1)
    workstationInputElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.input[0]['key'])
    workstationInputElement.clear()
    time.sleep(1)
    if workstationInputElement.text == "":
        workstationInputElement.send_keys("光谷院区: " + execute_list[0])
    else:
        workstationInputElement.clear()
        time.sleep(1)
        workstationInputElement.send_keys("光谷院区: " + execute_list[0])

    time.sleep(1)
    workstationInputElement.send_keys(Keys.ENTER)
    on_click(browser, (By.XPATH, '//button[contains(text(),"确定")]'))
    browser.implicitly_wait(30)
    time.sleep(2)
    # 处方供药
    reManageElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.div[0]['key'])
    reManageElement.click()
    browser.find_element_by_link_text('处方供药').click()
    time.sleep(2)

    calendar_element = \
    browser.find_element_by_xpath(PdsApplyPharmElement.fieldset[2]['key']).find_elements_by_tag_name('input')[3]
    js = "document.getElementsByTagName('fieldset')[0].getElementsByTagName('input')[3].removeAttribute('readonly')"
    browser.execute_script(js)
    calendar_element.clear()
    calendar_element.send_keys(time.strftime("%Y-%m-%d", time.localtime()))
    time.sleep(2)
    js = "document.getElementsByTagName('fieldset')[0].getElementsByTagName('input')[3].blur()"
    browser.execute_script(js)
    browser.find_element_by_xpath(
        PdsApplyPharmElement.fieldset[2]['key']).find_elements_by_tag_name(
            'img')[1].click()
    browser.find_element_by_xpath("//button[contains(text(),'今天')]").send_keys(
        Keys.ENTER)

    cardElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.input[1]['key'])
    cardElement.send_keys(cache.get('patient_card') + '\n')
    browser.implicitly_wait(30)
    receiveListElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.div[3]['key']).find_elements_by_tag_name('tr')
    for i in range(0, len(receiveListElement)):
        applyElement = receiveListElement[i].find_elements_by_tag_name('div')
        for j in range(0, len(applyElement)):
            for appliction in application_list:
                if applyElement[j].text == appliction:
                    applyElement[j].click()

    #获取处方药品信息
    drug_detail = PdsApplyPharmElement.div[4]['key']
    drug_detail_elements = browser.find_element_by_xpath(
        drug_detail).find_elements_by_tag_name('tr')
    verifys = []
    pds_emr = cache.get('pds_emr')
    for i in range(0, len(drug_detail_elements)):
        pham = []
        drug_elements = drug_detail_elements[i].find_elements_by_tag_name(
            'div')
        for drug in drug_elements:
            pham.append(drug.text)
        verifys.append(pham)
    #验证药品库存数量
    totals = []  #处方供药的药品总量的集合
    pham_stocks = []  #药品库存集合

    for verify in verifys:
        for i in range(0, len(pds_emr)):
            if pds_emr[i][cpoe_out_order['pham_name']] == verify[2]:
                pham_num = dao.find_pham_num(verify[2], verify[3],
                                             execute_list[0])  #药品库存数量
                pham_basic_info = dao.find_pham_basic_info(
                    verify[2], verify[3])  #药品基本信息
                appy_pham_temp(pham_num, pham_basic_info, pds_emr[i])  #调用供药模板
                total = math.ceil(pds_emr[i][cpoe_out_order['dosage']] /
                                  pham_basic_info.dose_per_unit *
                                  pham_basic_info.package_factor)  #药品总量
                totals.append(total)
                pham_stocks.append(pham_num[0])
            else:
                log.info('未找到%s医嘱' % verify[2])
    time.sleep(1)
    recSureElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.button[2]['key'])
    recSureElement.click()
    on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
    browser.implicitly_wait(30)
    time.sleep(2)
    listUrl = '处方单'
    Utility.microsoft_xps_document_writer(listUrl)

    browser.implicitly_wait(30)
    log.info('获取药品信息....')
    time.sleep(4)

    #验证
    pham_stocks_after = []  #供药后,药品库存
    for verify in verifys:
        for i in range(0, len(pds_emr)):
            if pds_emr[i][cpoe_out_order['pham_name']] == verify[2]:
                pham_num = dao.find_pham_num(verify[2], verify[3],
                                             execute_list[0])
                pham_basic_info = dao.find_pham_basic_info(
                    verify[2], verify[3])
                appy_pham_temp(pham_num, pham_basic_info, pds_emr[i])
                pham_stocks_after.append(pham_num[0])
            else:
                log.info('未找到%s医嘱' % verify[2])
    status = True
    for i in range(0, len(totals)):
        print(pham_stocks[i] - pham_stocks_after[i] == totals[i])
        if not (pham_stocks[i] - pham_stocks_after[i] == totals[i]):
            status = False
            log.info('处方供药,药品库存数量验证fial')
    if status:
        log.info('处方供药,药品库存数量验证pass')

    #核对发药
    receiveManagerElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.div[0]['key'])
    receiveManagerElement.click()
    # sendMedElement=browser.find_element_by_xpath(PdsApplyPharmElement.a[6]['key'])
    # sendMedElement.click()
    browser.find_element_by_link_text('核对发药').click()
    sendCardElement = browser.find_element_by_xpath(
        PdsApplyPharmElement.fieldset[0]['key']).find_elements_by_tag_name(
            'input')[1]

    sendCardElement.send_keys(str(cache.get('patient_card')) + '\n')
    end_time = time.time() + 3
    while True:
        if '暂时没有您需要的数据...' not in get_text(
                browser, (By.XPATH, PdsApplyPharmElement.div[5]['key'])):
            break
        if time.time() > end_time:
            log.info('核对发药页面加载超时或没有找到发药单')
            return
    # browser.find_element_by_xpath(PdsApplyPharmElement.fieldset[0]['key']).find_elements_by_tag_name('button')[0].click()
    browser.find_element_by_xpath("//button[contains(text(),'发药(O)')]").click()
    browser.find_element_by_xpath("//button[contains(text(),'是')]").click()
    log.info('供药脚本运行结束')
Ejemplo n.º 22
0
def test_leave_sign(browser, testcase, cache):
    log.info('开始运行留号脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"门诊挂号")]'))
    on_click(browser, (By.LINK_TEXT, '留号'))

    # 调取挂号验证模板
    RegSource = dao.outp_regist_master(testcase)
    if RegSource != None:
        temp.outp_reg_source_temp(RegSource)
        current_no = RegSource.OutpRegMaster.current_no
        current_limits = RegSource.OutpRegMaster.current_limits

    #刷卡
    locator = (By.XPATH, body.卡号)
    send_value(browser, locator, testcase[leave_sign['patient_card']] + '\n')
    #输入日期
    remove_js = "document.getElementsByClassName('x-triggerfield-noedit')[0].removeAttribute('readonly')"
    focus_js = "document.getElementsByClassName('x-triggerfield-noedit')[0].blur()"
    input_locator = (By.XPATH, head_button.就诊时间)
    img_locator = (By.XPATH, head_button.日期图标)
    date = testcase[leave_sign['visit_time']]
    calendar(browser, remove_js, focus_js, input_locator, img_locator, date)
    locator = (By.XPATH, body.号源列表 + '//tr')
    num = len(browser.find_elements(locator[0], locator[1]))
    #输入医生名
    select_locator = (By.XPATH, head_button.查询条件)
    send_value(browser, select_locator, testcase[leave_sign['doctor_name']])
    list_message = [
        testcase[leave_sign['outp_time']], testcase[leave_sign['special_name']]
    ]
    if not filter_lists(browser, locator, list_message, num, 'button'):
        log.info('没有号源信息')
        return
    on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
    # 调取挂号验证模板
    RegSource = dao.outp_regist_master(testcase)
    if RegSource != None:
        RegSourceAfter = dao.outp_regist_master(testcase)
        temp.outp_reg_source_temp(RegSourceAfter)
    # 数据验证
    if RegSourceAfter.OutpRegMaster.current_no - current_no == 1 and current_limits - RegSourceAfter.OutpRegMaster.current_limits == 1:
        Utility.writeFile('当前号和已挂数  pass')
    else:
        Utility.writeFile('当前号和已挂数  fail')
    business_type = cache.get('business_type')
    if not business_type:
        cache.set('business_type', [[
            '留号', testcase[leave_sign['name']],
            testcase[leave_sign['special_name']],
            testcase[leave_sign['outp_time']],
            testcase[leave_sign['doctor_name']],
            testcase[leave_sign['visit_time']]
        ]])
    else:
        business_type.append([
            '留号', testcase[leave_sign['name']],
            testcase[leave_sign['special_name']],
            testcase[leave_sign['outp_time']],
            testcase[leave_sign['doctor_name']],
            testcase[leave_sign['visit_time']]
        ])
    log.info('挂号留号运行结束')
Ejemplo n.º 23
0
def pds_emr_login(browser,list,pdsList,cache):
    # typeElement1 = browser.find_element_by_xpath(CpoeOutOrderElement.img[5]['key'])
    # typeElement1.click()
    # time.sleep(2)
    on_click(browser,(By.XPATH,CpoeOutOrderElement.input[9]['key']))
    js = "document.getElementsByTagName('img')[54].click()"
    browser.execute_script(js)

    # tyElement = browser.find_element_by_xpath(
    #     str(CpoeOutOrderElement.select[3]['key']) + 'div[' + str(list[0]) + ']')
    # tyElement.click()
    on_click(browser,(By.XPATH,'//div[contains(text(),"药疗")]'))
    pdsNameElement1 = browser.find_element_by_xpath(CpoeOutOrderElement.input[9]['key'])
    pdsNameElement1.send_keys(list[1])
    time.sleep(1.5)
    pdsNameElement1.send_keys(Keys.ENTER)
    if list[2] == 1:
        takeMedicineElement = browser.find_element_by_xpath(CpoeOutOrderElement.input[3]['key'])
        takeMedicineElement.click()
    time.sleep(1.5)
    useLevelElement = browser.find_element_by_xpath(CpoeOutOrderElement.input[10]['key'])
    useLevelElement.send_keys(list[3])
    # tuJinElement = browser.find_element_by_xpath(CpoeOutOrderElement.img[6]['key'])
    # tuJinElement.click()
    # js = "document.getElementsByTagName('img')[57].click()"
    # browser.execute_script(js)
    # time.sleep(2)
    # browser.find_element_by_xpath('//div[contains(text(),"口服")]').send_keys(Keys.ENTER)

    send_value(browser,(By.XPATH,'/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[6]/div[3]/div/div[1]/div/input'),'口服')
    time.sleep(1.5)
    browser.find_element_by_xpath('/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[6]/div[3]/div/div[1]/div/input').send_keys(Keys.ENTER)



    js = "document.getElementsByTagName('img')[58].click()"
    browser.execute_script(js)
    time.sleep(1.5)
    browser.find_element_by_xpath('/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[6]/div[4]/div/div[1]/div/input').send_keys(Keys.ENTER)
    # liaoChenElement = browser.find_element_by_xpath(CpoeOutOrderElement.input[11]['key'])
    # liaoChenElement.send_keys(list[6])
    # liaoChenElement.send_keys(Keys.ENTER)
    send_value(browser,(By.XPATH,'/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[6]/div[6]/div/div[1]/div/input'),'1')
    browser.find_element_by_xpath('/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[2]/div/div[2]/div[2]/div[2]/div[1]/div/div/div/div[2]/div[2]/div[1]/div[6]/div[6]/div/div[1]/div/input').send_keys(Keys.ENTER)
    time.sleep(1.5)
    js = "document.getElementsByTagName('button')[13].click()"
    browser.execute_script(js)
    cache.set('actionDepartment','门诊药房')
    listUrl = '医嘱'
    Utility.microsoft_xps_document_writer(listUrl)


# if __name__ == '__main__':
#     browser = common.browser()
#     testcase = {'用户名': 'jfli', '密码': '123456'}
#     cache = Cache({})
#     cache.set('resultType',1)
#     cache.set('specialName', '眼科门诊')
#     cache.set('patient_card','%E?;1004627675=99015017425?+E?')
#     login.test_login(browser, testcase, cache)
#     emrList = {'诊断类别': '2', '诊断名称': '神经痛'}
#     # test_workstation(browser, cache)
#     # test_diagnose(browser, emrList, cache)
#     pdsList = {'途径': 1, '患者姓名': 'ray', '用药目的': '', '诊断类别': 1, '患者卡号': '%E?;1004627675=99015017425?+E?', '诊断名称': '神经痛', '频次': 1, '每次用量': 1, '医嘱类型': 3, '是否带药': 0, '医嘱名称拼音码': 'wwsjn', '执行科室': '', '疗程': 1}
#     test_emr_pds(browser, pdsList, cache)
Ejemplo n.º 24
0
def test_revise(browser, testcase, cache):
    log.info('开始运行号源调整脚本')
    # 判断门诊办公室工作站是否打开
    login.select_workstation(browser, '门诊办公室工作站', cache)
    locator = (By.XPATH, '//div[contains(text(),"号源管理")]')
    on_click(browser, locator)
    locator = (By.LINK_TEXT, '号源调整')
    on_click(browser, locator)
    #输入日期
    calendar_element = browser.find_element(By.XPATH, Input.date)
    js = "document.getElementsByTagName('input')[1].removeAttribute('readonly')"
    browser.execute_script(js)
    calendar_element.clear()
    calendar_element.send_keys(time.strftime("%Y-%m-%d", time.localtime()))
    js = "document.getElementsByTagName('input')[1].blur()"
    browser.execute_script(js)
    locator = (By.XPATH, Img.calendar_img)
    on_click(browser, locator)
    browser.find_element_by_xpath("//button[contains(text(),'今天')]").send_keys(
        Keys.ENTER)
    # 输入门诊科室
    browser.find_element(By.XPATH, Input.belong_clinic_code).clear()
    browser.find_element(By.XPATH, Input.belong_clinic_code).send_keys(
        testcase[plus_sign['clinic_code']])
    locator = (By.XPATH, '//div[contains(text(),"光谷院区")]')
    on_click(browser, locator)
    #输入医生
    browser.find_element(By.XPATH, Input.doctor).clear()
    browser.find_element(By.XPATH, Input.doctor).send_keys(
        testcase[plus_sign['doctor_code']])
    locator = (By.XPATH, '//div[contains(text(),"' +
               testcase[plus_sign['doctor_name']] + '")]')
    on_click(browser, locator)
    #选择专家号
    locator = (By.XPATH, '//label[contains(text(),"专家")]')
    on_click(browser, locator)
    outp_time_dict = {'上午': 8, '下午': 19, '晚上': 30}
    #判断是否存在相同号源
    special_element = browser.find_element(By.XPATH,
                                           Div.special_list).find_elements(
                                               By.TAG_NAME, 'tr')
    if len(special_element) > 1:
        log.info('存在相同号源')
    # print(browser.find_element_by_xpath(Div.special_list+'//td[8]').text)
    num = outp_time_dict[testcase[plus_sign['outp_time']]]
    locator = (By.XPATH, Div.special_list + '//td[' + str(num) + ']')
    on_click(browser, locator)
    reg_num = browser.find_element(By.XPATH, Div.special_list).find_elements(
        By.TAG_NAME, 'td')[num + 1].text  #已挂数
    appoint_num = browser.find_element(By.XPATH,
                                       Div.special_list).find_elements(
                                           By.TAG_NAME,
                                           'td')[num + 4].text  #预约数
    #判断号源详情弹出窗是否弹出
    locator = (By.XPATH, Div.special_detail)
    if is_text(browser, locator, '号源详情'):
        send_value(browser, (By.XPATH, Input.appoint_limit_no),
                   str(int(appoint_num) + 1))
        send_value(browser, (By.XPATH, Input.limit_no), str(int(reg_num) + 1))
        locator = (By.XPATH, '//button[contains(text(),"保存")]')
        on_click(browser, locator)
        locator = (By.XPATH, '//button[contains(text(),"是")]')
        on_click(browser, locator)
    else:
        log.info('号源详情窗口未弹出')
    log.info('号源调整脚本运行结束')
Ejemplo n.º 25
0
def test_arrearage_return_premium(browser, cache):
    log.info('开始运行欠费退费脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"欠费管理")]'))
    on_click(browser, (By.LINK_TEXT, '欠费结账/退费'))
    boolen = get_prompt(browser)
    if boolen:
        if re.sub('\D', '', boolen) == '0':
            log.info(boolen)
            return
        else:
            on_click(browser, (By.XPATH, "//button[contains(text(),'确定')]"))
    #刷卡
    send_value(browser, (By.XPATH, patient_message.刷卡),
               cache.get('patient_card') + '\n')
    end_time = time.time() + 1
    # arrearage_list_text = ''    #欠费记账列表信息
    while True:
        arrearage_list_text = get_text(browser,
                                       (By.XPATH, arrearage_list.欠费记账患者列表))
        if '暂无可显示的欠费病人信息' not in arrearage_list_text:
            break
        if time.time() > end_time:
            log.info('欠费记账患者列表加载超时')
            return
    lists = ['处方单', '毒麻单', '检查单', '检验单', '治疗单', '皮试单', '输液单', '草药', '病理类']
    applys = []  #所有申请单号
    for appply_type in lists:
        applycation = cache.get(appply_type)
        if applycation:
            applys = applys + list(applycation)
    for apply_id in applys:
        if is_selected(browser, ((By.XPATH, arrearage_list.全选))):
            on_click(browser, (By.XPATH, arrearage_list.全选))
        rek_no = find_rek_no(apply_id)
        if rek_no == []:
            log.info('%s申请单未计费或已退费' % rek_no)
            continue
        elif rek_no in arrearage_list_text:
            on_click(browser,
                     (By.XPATH, '//div[contains(text(),"%s")]' % rek_no))
            on_click(browser, (By.XPATH, '//div[contains(text(),"退 费")]'))
            element_wait(browser,
                         (By.XPATH, '//span[contains(text(),"欠费记账退费窗口")]'))
            if '正常' in get_text(browser,
                                (By.XPATH, arrearage_return_premium.退费列表)):
                webElement = browser.find_elements_by_xpath(
                    arrearage_return_premium.退费列表 +
                    '//label[contains(text(),"正常")]')
                for element in webElement:
                    element.click()
            on_click(browser, (By.XPATH, '//button[contains(text(),"确定退费")]'))
            on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
            microsoft_xps_document_writer('欠费退费单')
Ejemplo n.º 26
0
def test_arrearage_settle_accounts(browser, cache):
    log.info('开始运行欠费结账脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"欠费管理")]'))
    on_click(browser, (By.LINK_TEXT, '欠费结账/退费'))
    boolen = get_prompt(browser)
    if boolen:
        if re.sub('\D', '', boolen) == '0':
            log.info(boolen)
            return
        else:
            on_click(browser, (By.XPATH, "//button[contains(text(),'确定')]"))
    #刷卡
    send_value(browser, (By.XPATH, patient_message.刷卡),
               cache.get('patient_card') + '\n')
    on_click(browser, (By.XPATH, '//button[contains(text(),"收 费")]'))
    on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
    text = get_text(browser, (By.XPATH, "//label"))
    if "交款方式" not in text:
        microsoft_xps_document_writer('欠费结账单')
    else:
        send_value(browser, (By.XPATH, recharge_window.支付类型), '1')
        on_click(browser, (By.XPATH, '//button[contains(text(),"确认")]'))
        on_click(browser, (By.XPATH, '//button[contains(text(),"是")]'))
        microsoft_xps_document_writer('欠费结账充值单')
Ejemplo n.º 27
0
def test_pay_org(browser, cache):
    log.info('开始运行医技执行科室收费脚本')
    login.select_workstation(browser, '医技工作站', cache)  # 工作站是否打开
    #获取申请单及执行科室
    application_type_list = ['检验单', '治疗单', '病理类', '检查单']
    #对所有申请单进行归类整理,把执行科室相同的申请单归为一类
    for application_type in application_type_list:
        diction = cache.get(application_type)
        if diction:
            application = list(diction.keys())
            executive_department_list = list(diction.values())
            for t in list(set(executive_department_list)):
                on_click(browser, (By.XPATH, '//button[contains(text(),"【")]'))
                #选择工作站
                executive_department_name = HOSPITA_AREA + ': ' + t
                select_dept(browser, '选择工作台', executive_department_name,
                            (By.XPATH, select_window.选择工作站))
                on_click(browser,
                         (By.XPATH, "//button[contains(text(),'确定')]"))
                # is_refresh(browser,browser.find_element_by_xpath('//div[contains(text(),"门诊执行收退费")]'))
                element_wait(browser,
                             (By.XPATH, '//div[contains(text(),"门诊执行收退费")]'))
                on_click(browser,
                         (By.XPATH, '//div[contains(text(),"门诊执行收退费")]'))
                on_click(browser, (By.LINK_TEXT, '门诊执行科室收费'))
                # 刷卡
                date = time.strftime("%Y-%m-%d", time.localtime())
                send_value(browser, (By.XPATH, application_list.开单时间),
                           '2017-06-15')
                send_value(browser, (By.XPATH, patient_message.卡号),
                           cache.get('patient_card') + '\n')
                # 勾选是否打印
                on_click(browser,
                         (By.XPATH, '//label[contains(text(),"是否打印收费凭证")]'))
                first_pos = 0
                for i in range(executive_department_list.count(t)):
                    element_inexistence(
                        browser, (By.XPATH, "//div[contains(text(),'正在加载')]"))
                    new_list = executive_department_list[first_pos:]
                    next_pos = new_list.index(t) + 1
                    index = first_pos + new_list.index(t)
                    first_pos += next_pos
                    locator = (By.XPATH, '//div[contains(text(),"%s")]' %
                               application[index])
                    on_click(browser, locator)
                    # time.sleep(2)
                    element_inexistence(
                        browser, (By.XPATH, "//div[contains(text(),'正在加载')]"))
                    application_detail_text = browser.find_element_by_xpath(
                        application_detail.申请单计费明细列表).text
                    if application_detail_text.strip() != '':
                        on_click(browser,
                                 (By.XPATH,
                                  '//button[contains(text(),"收费(Enter)")]'))
                        on_click(browser,
                                 (By.XPATH, '//button[contains(text(),"是")]'))
                    else:
                        log.info('%s申请单已计费' % application[index])
                element_wait(browser, (By.XPATH, application_detail.申请单计费明细列表))
                browser.refresh()
Ejemplo n.º 28
0
def test_pharm_return(browser, cache):

    applications = list(cache['处方单'].keys())

    # 判断门诊挂号收费工作站是否打开
    login.select_workstation(browser, '药房工作站', cache)
    on_click(browser, (By.XPATH, '//div[contains(text(),"收方管理")]'))
    on_click(browser, (By.LINK_TEXT, "处方供药"))
    on_click(browser, (By.XPATH, '//div[contains(text(),"收方管理")]'))
    on_click(browser, (By.LINK_TEXT, "核对发药"))

    #进入处方退药界面
    browser.find_element_by_xpath(pharm_return.div[0]['key']).click()
    browser.find_element_by_link_text('处方退药').click()

    #退药信息区域
    drug_return_message = pharm_return.div[1]['key']

    #患者信息区域
    patient_message = pharm_return.div[2]['key']

    #申请单列表区域
    application_list = pharm_return.div[3]['key']

    #退药明细区域
    drug_return_detail = pharm_return.div[4]['key']

    calendar_element = browser.find_element_by_xpath(
        drug_return_message).find_elements_by_tag_name('input')[3]
    js = "document.getElementsByTagName('fieldset')[4].getElementsByTagName('input')[3].removeAttribute('readonly')"
    browser.execute_script(js)
    calendar_element.clear()
    calendar_element.send_keys(time.strftime("%Y-%m-%d", time.localtime()))
    time.sleep(2)
    js = "document.getElementsByTagName('fieldset')[4].getElementsByTagName('input')[3].blur()"
    browser.execute_script(js)
    browser.find_element_by_xpath(
        drug_return_message).find_elements_by_tag_name('img')[1].click()
    browser.find_element_by_xpath("//button[contains(text(),'今天')]").send_keys(
        Keys.ENTER)
    swip_card_element = browser.find_element_by_xpath(
        drug_return_message).find_elements_by_tag_name('input')[0]
    swip_card_element.clear()
    swip_card_element.send_keys(str(cache['patient_card']) + '\n')
    patient_message_elements = browser.find_element_by_xpath(
        patient_message).find_elements_by_tag_name('input')
    label_elements = browser.find_element_by_xpath(
        patient_message).find_elements_by_tag_name('label')

    patient_dict = {}
    for i in range(0, len(patient_message_elements)):
        patient_dict[label_elements[i].text] = patient_message_elements[i].text
    '''
    数据验证
    '''
    application_list_elements = browser.find_element_by_xpath(
        application_list).find_elements_by_tag_name('tr')
    for i in range(0, len(application_list_elements)):
        applyElement = application_list_elements[i].find_elements_by_tag_name(
            'div')
        for j in range(0, len(applyElement)):
            for appliction in applications:
                if applyElement[j].text == appliction:
                    applyElement[j].click()

    drug_return_detail_elements = browser.find_element_by_xpath(
        drug_return_detail).find_elements_by_tag_name('tr')
    for drug_detail in drug_return_detail_elements:
        # drug_return_num = drug_detail.find_elements_by_tag_name('span')[1].text
        # print(drug_return_num)
        # number = random.randint(1,drug_return_num)
        # drug_detail.find_elements_by_tag_name('div')[7].send_keys(number)

        drug_return_num = int(
            re.sub('[\u4e00-\u9fa5]', '',
                   (drug_detail.find_elements_by_tag_name('span')[1].text)))
        number = random.randint(1, drug_return_num)
        drug_detail.find_elements_by_tag_name('div')[6].click()
        time.sleep(1)
        browser.find_element_by_xpath(
            '/html/body/div[1]/div/div[2]/div[1]/div[2]/div[1]/div[4]/div/div[2]/div[1]/div[2]/div[2]/div[1]/div/div[1]/div[1]/div[2]/div[2]/div/input'
        ).send_keys(number)
        # js = 'document.getElementsByClassName(" x-form-field x-form-text xh-highlight  x-form-focus")[0].innerHTML=1'
        # browser.execute_script(js)
    browser.find_element_by_xpath("//button[contains(text(),'退药(O)')]").click()
    time.sleep(1)
    browser.find_elements_by_xpath(
        "//button[contains(text(),'确认(O)')]")[1].click()
    microsoft_xps_document_writer('退药单')
    cache.set('apply_date', time.strftime("%Y-%m-%d", time.localtime()))
    cache.set('apply_card', applications)
    browser.refresh()
Ejemplo n.º 29
0
def test_outbill_prepay_refuse(browser, cache):
    #判断门诊挂号收费工作站是否打开
    login.select_workstation(browser, '门诊挂号收费工作台', cache)

    #获取退费管理菜单元素
    outbill_refund = OutbillPrepayRefuseElement.div[0]['key']

    #获取预付费缴费(执行科室退费)元素
    outbpre_refuse = OutbillPrepayRefuseElement.a[0]['key']

    #获取提示框
    alert = OutbillPrepayRefuseElement.button[0]['key']

    #获取申请单列表区域元素
    apply_list = OutbillPrepayRefuseElement.div[1]['key']

    #获取患者信息元素
    patient_message = OutbillPrepayRefuseElement.form[0]['key']

    #获取退费明细列表区域元素
    refund_detail = OutbillPrepayRefuseElement.div[2]['key']

    #获取卡号元素
    card = OutbillPrepayRefuseElement.div[3]['key']

    #获取按钮区域元素
    button = OutbillPrepayRefuseElement.div[4]['key']

    #患者信息列表
    patient_message_dict = {}

    #申请单号列表
    apply_card = []

    #是否退费
    sure_button = OutbillPrepayRefuseElement.button[1]['key']

    #退费金额合计
    refund_count = OutbillPrepayRefuseElement.b[0]['key']

    outbill_refund_element = browser.find_element_by_xpath(outbill_refund)
    outbill_refund_element.click()
    browser.implicitly_wait(30)
    outbpre_refuse_element = browser.find_element_by_xpath(outbpre_refuse)
    outbpre_refuse_element.click()
    browser.implicitly_wait(30)
    alert_element = browser.find_element_by_xpath(alert)
    alert_element.click()
    card_element = browser.find_element_by_xpath(
        card).find_elements_by_tag_name('input')
    card_element[0].clear()

    card_element[0].send_keys(str(cache.get('patient_card')) + '\n')

    patient_message_elements = browser.find_element_by_xpath(
        patient_message).find_elements_by_tag_name('input')
    # for i in range(0,len(patient_message_elements)):
    #     patient_message_list.append(patient_message_elements[i].text)
    patient_message_dict['patient_id'] = patient_message_elements[0].text
    patient_message_dict['balance'] = patient_message_elements[1].text
    # 数据校验
    '''
     '''

    apply_list_element = browser.find_element_by_xpath(
        apply_list).find_elements_by_tag_name('tr')
    for i in range(0, len(apply_list_element)):
        apply_element = apply_list_element[i].find_elements_by_tag_name('div')
        for j in range(0, len(apply_element)):
            if cache.get('apply_date') == apply_element[j].text:
                apply_element[j].click()
                browser.implicitly_wait(30)
                time.sleep(2)
                refund_detail_elements = browser.find_element_by_xpath(
                    refund_detail).find_elements_by_tag_name('table')
                # print(len(refund_detail_elements))
                for i in range(0, len(refund_detail_elements)):
                    apply_text = refund_detail_elements[
                        i].find_elements_by_tag_name('div')[7].text
                    apply_card.append(apply_text)

                print(apply_card)
                if set(apply_card).issubset(set(cache.get('apply_card'))):
                    patient_message_dict[
                        'refund_count'] = browser.find_element_by_xpath(
                            refund_count)
                    '''
                  数据校验
                  '''

                    on_click(browser,
                             (By.XPATH, '//button[contains(text(),"退费")]'))

                    on_click(browser,
                             (By.XPATH, '//button[contains(text(),"确定")]'))
                    time.sleep(4)
                    listUrl = '退费发票单'
                    Utility.microsoft_xps_document_writer(listUrl)
                    browser.implicitly_wait(30)
                    on_click(browser,
                             (By.XPATH, '//button[contains(text(),"确定")]'))
                    return
                else:
                    apply_card = []
    browser.refresh()
Ejemplo n.º 30
0
def test_pay_refund(browser, cache):
    log.info('开始运行预付费退费(窗口)脚本')
    login.select_workstation(browser, '门诊挂号收费工作台', cache)  # 工作站是否打开
    on_click(browser, (By.XPATH, '//div[contains(text(),"门诊退费管理")]'))
    on_click(browser, (By.LINK_TEXT, '预付费退费(窗口)'))
    boolen = get_prompt(browser)
    if boolen:
        if re.sub('\D', '', boolen) == '0':
            log.info(boolen)
            return
        else:
            on_click(browser, (By.XPATH, "//button[contains(text(),'确定')]"))

    lists = ['处方单', '毒麻单', '检查单', '检验单', '治疗单', '皮试单', '输液单', '草药', '病理类']
    rek_no_list = []
    for list_type in lists:
        applys = cache.get(list_type)
        if applys == None:
            continue
        for apply_id in list(applys.keys()):
            result = find_rek_no(apply_id)
            if result != []:
                rek_no_list.append(result.Rek.rek_no)
            else:
                log.info('%s申请单未收费或已退费' % apply_id)
    for rek_no in rek_no_list:
        # print(rek_no)
        send_value(browser, (By.XPATH, query_area.缴费流水号), rek_no + '\n')
        apply_status = get_text(browser,
                                (By.XPATH, list_area.退费明细列表 + '//label'))
        if '正常' in apply_status:
            status_elements = browser.find_elements_by_xpath(list_area.退费明细列表 +
                                                             '//label')
            for status_element in status_elements:
                status_element.click()
        if '取消' in get_text(browser, (By.XPATH, list_area.退费明细列表 + '//label')):
            on_click(browser, (By.XPATH, query_area.退费))
            on_click(browser, (By.XPATH, '//button[contains(text(),"确定")]'))
            microsoft_xps_document_writer('退费单')
            on_click(browser, (By.XPATH, '//button[contains(text(),"确定")]'))
    log.info('运行预付费退费(窗口)脚本结束')