from pymysql import connect, cursors
import os
import requests
import json
from PIL import Image
import cv2
import numpy as np
import xlwt


dbconn = connect(
        host='rm-2zepcf8kag0aol0q48o.mysql.rds.aliyuncs.com',
        port=3306,
        user='ai_root',
        password='ai_root888',
        db='medical_platform',
        charset='utf8',
        cursorclass=cursors.DictCursor)

# dbconn = connect(
#     host=dbhost,
#     port=dbport,
#     user=dbuser,
#     password=dbpwd,
#     db=dbname,
#     charset=dbcharset,
#     cursorclass=cursors.DictCursor)
    
def query(sql):
    with dbconn.cursor() as cursor:
        cursor.execute(sql)
        dbconn.commit()
        return cursor.fetchall()
    
def get_files_in_directory(directory):
    file_paths = []
    for root, dirs, files in os.walk(directory):
        for file in files:
            file_paths.append(os.path.join(root, file))
    return file_paths
    

def copy_and_save_image(input_image_path, output_image_path, filename):
    try:
        os.makedirs(output_image_path, exist_ok=True)
        img = Image.open(input_image_path)
        img.copy().save(output_image_path+filename)
    except Exception as e:
        # 异常处理代码
        print(e)


def cp_img(name):

    i = 0
    size = 100
    while i <= 100:
        page = i * size
        i += 1
        
        sql_str = 'select m.de_instances_id, s.de_kind_id, m.de_position_name, m.de_system_name, m.de_organ_name, m.de_disease_name, m.de_symptom_name, i.png, i.is_boost, i.boost_png' \
                    ' from hos_database.de_instance_new_mark as m' \
                    ' left join hos_database.de_instances as i on m.de_instances_id = i.id ' \
                    ' left join hos_database.de_system as s on m.de_system_id = s.id ' \
                    ' where m.de_organ_name = "'+name+'"' \
                    ' limit ' + str(page) + ', ' + str(size)

        rows = query(sql_str)
        
        if len(rows) == 0 :
            break
        
        print(i)
        
        de_instance_id = ''
        for v3 in rows:
            de_instance_id += str(v3['de_instances_id'])+','
            
        de_instance_id = de_instance_id.strip(',')
        
        # examine_pass_status 审核状态 1 未完成 2 未通过 3 通过 4 待审核
        # instance_type 基础模块 1图像质量2 摆位 3 区域/器官 4 病症
        # valid_status 病症状态 1有病症 2 无病症 3 无效 4 未标记 5 不确定
        sql_str2 = 'select de_instance_id from medical_platform.dcm_image_list_instance' \
                    ' where de_instance_id in ('+de_instance_id+')' \
                    ' and instance_type = 4 '
        
        rows2 = query(sql_str2)
        
        for v2 in rows2:
            for v in rows:
                if v2['de_instance_id'] == v['de_instances_id']:
                    png = ''
                    
                    if v['is_boost'] == 1:
                        png = v['boost_png']
                    else:
                        png = v['png']
                        
                    species = ''
                    
                    if v['de_kind_id'] == 1:
                        species = 'cat'
                    else:
                        species = 'dog'
                        
                    # print(v['de_instances_id'], v['de_organ_name'], v['de_disease_name'], v['de_symptom_name'], jpeg, png, v['_value'])
                    
                    filename = png.split("/")[-1]
                
                    # download_image(png, "/disk0/data/images/disease/"+name+"/",filename)
                    input_path = "/disk0/data/images/positive/"+name+"/"+filename  # 输入图片文件路径
                    output_path = "/disk0/data/organ/"+species+"/"+v['de_position_name']+"/"+v['de_system_name']+"/"+v['de_organ_name']+"/" # 输出图片文件路径
                    copy_and_save_image(input_path, output_path,filename)
                    
                    output_path2 = "/disk0/data/symptom/"+species+"/"+v['de_position_name']+"/"+v['de_system_name']+"/"+v['de_symptom_name']+"/" # 输出图片文件路径
                    copy_and_save_image(input_path, output_path2,filename)


# 阳性
def img1(name):
    i = 0
    size = 100
    while i <= 100:
        page = i * size
        i += 1
        
        sql_str = 'select m.de_instances_id, m._value, m.de_organ_name, m.de_disease_name, m.de_symptom_name, i.jpeg, i.png, i.is_boost, i.boost_jpeg, i.boost_png' \
                    ' from hos_database.de_instance_new_mark as m' \
                    ' left join hos_database.de_instances as i on m.de_instances_id = i.id ' \
                    ' where m.de_disease_name = "'+name+'"' \
                    ' limit ' + str(page) + ', ' + str(size)

        rows = query(sql_str)
        
        if len(rows) == 0 :
            break
        
        print(i)
        
        de_instance_id = ''
        for v3 in rows:
            de_instance_id += str(v3['de_instances_id'])+','
            
        de_instance_id = de_instance_id.strip(',')
        
        # examine_pass_status 审核状态 1 未完成 2 未通过 3 通过 4 待审核
        # instance_type 基础模块 1图像质量2 摆位 3 区域/器官 4 病症
        # valid_status 病症状态 1有病症 2 无病症 3 无效 4 未标记 5 不确定
        sql_str2 = 'select de_instance_id from medical_platform.dcm_image_list_instance' \
                    ' where de_instance_id in ('+de_instance_id+')' \
                    ' and instance_type = 4 '
        
        rows2 = query(sql_str2)
        
        for v2 in rows2:
            for v in rows:
                if v2['de_instance_id'] == v['de_instances_id']:
                    jpeg = ''
                    png = ''
                    
                    if v['is_boost'] == 1:
                        jpeg = v['boost_jpeg']
                        png = v['boost_png']
                    else:
                        jpeg = v['jpeg']
                        png = v['png']
                        
                    # print(v['de_instances_id'], v['de_organ_name'], v['de_disease_name'], v['de_symptom_name'], jpeg, png, v['_value'])
                    
                    filename = png.split("/")[-1]
                
                    download_image(png, "/disk0/data/images/disease/"+name+"/",filename)
      
# 阴性  
def img2():
    i = 0
    size = 100
    while i <= 100:
        page = i * size
        i += 1
        
        # examine_pass_status 审核状态 1 未完成 2 未通过 3 通过 4 待审核
        # instance_type 基础模块 1图像质量2 摆位 3 区域/器官 4 病症
        # valid_status 病症状态 1有病症 2 无病症 3 无效 4 未标记 5 不确定
        sql_str = 'select de_instance_id from medical_platform.dcm_image_list_instance' \
            ' where instance_type = 4 and examine_pass_status = 3 and valid_status = 2' \
            ' order by id desc limit ' + str(page) + ', ' + str(size)

        rows = query(sql_str)
        
        if len(rows) == 0:
            break
        
        de_instance_id = ''
        for v2 in rows:
            de_instance_id += str(v2['de_instance_id'])+','
            
        de_instance_id = de_instance_id.strip(',')
    
        sql_str3 = 'select m.de_instances_id, m._value, m.de_organ_name, m.de_disease_name, m.de_symptom_name, i.ethnic_group, i.jpeg, i.png, i.is_boost, i.boost_jpeg, i.boost_png' \
                    ' from hos_database.de_instances as i' \
                    ' left join hos_database.de_instance_new_mark as m on m.de_instances_id = i.id ' \
                    ' where i.id in ('+de_instance_id+')'

        rows3 = query(sql_str3)
        
        print(i)
        if len(rows3) == 0:
            continue
        
        for v3 in rows3:
            
            if v3['de_instances_id'] is None:
                
                png = ''
                    
                if v3['is_boost'] == 1:
                    png = v3['boost_png']
                else:
                    png = v3['png']
                    
                # species = ''
                
                # if v3['ethnic_group'] == '猫':
                #     species = 'cat'
                # else:
                #     species = 'dog'
                    
                # print(v['de_instances_id'], v['de_organ_name'], v['de_disease_name'], v['de_symptom_name'], jpeg, png, v['_value'])
                
                filename = png.split("/")[-1]
            
                output_path = "/disk0/data/negative02/" # 输出图片文件路径
                download_image(png, output_path, filename)
                

def download_image(url, save_path, filename):
    try:
        # 发送HTTP GET请求
        response = requests.get(url)
        
        # 检查请求是否成功
        if response.status_code == 200:
            os.makedirs(save_path, exist_ok=True)
            # 以二进制写入文件
            with open(save_path+filename, 'wb') as file:
                file.write(response.content)
            print(f"Image successfully downloaded: {save_path}")
        else:
            print(f"Failed to retrieve image. Status code: {response.status_code}")
    except Exception as e:
        print(f"An error occurred: {e}")

# 单
def froi_img(image_path, output_path, filename, data):
    try:
        img = cv2.imread(image_path)
        height, width = img.shape[:2]
        image = np.zeros((height, width, 3), np.uint8)
        
        points = data['handles']['points']
        i = 0
        c = len(points)
        area = []
        while i < c: 

            area.append([int(points[i]['x']),int(points[i]['y'])])
            
            i+=1
            
            if i == c:
                area.append([int(points[0]['x']),int(points[0]['y'])])

        cv2.fillPoly(image,np.array([area]), color=(255, 255, 255))
        
        cv2.imwrite(output_path+filename, image)
    except Exception as e:
        # 异常处理代码
        print(e)


def froi(de_position_name, de_disease_name):
    i = 17
    size = 200
    while i <= 36:
        page = i * size
        i += 1
    
        sql_str3 = 'select m.de_instances_id, m._value, m.de_organ_id, m.de_organ_name, m.de_disease_id, m.de_disease_name, m.de_symptom_id, m.de_symptom_name, i.ethnic_group, i.jpeg, i.png, i.is_boost, i.boost_jpeg, i.boost_png' \
                    ' from hos_database.de_instances as i' \
                    ' left join hos_database.de_instance_new_mark as m on m.de_instances_id = i.id ' \
                    ' where m.de_position_name="'+de_position_name + '" and m.de_disease_name = "'+de_disease_name + '" and mark_type = "FreehandRoi"' \
                    ' limit ' + str(page) + ', ' + str(size)

        
        rows3 = query(sql_str3)
        
        print(i)
        if len(rows3) == 0:
            continue
        
        for v3 in rows3:
            
            png = ''
                    
            if v3['is_boost'] == 1:
                png = v3['boost_png']
            else:
                png = v3['png']
            
            filename = png.split("/")[-1]
                
            input_path = "/disk0/data/images/disease/"+de_disease_name+"/"+filename  # 输入图片文件路径
            
            output_path = "/disk0/data/disease_symptom/"+de_disease_name+"/"  # 输入图片文件路径
            
            output_path_ori = "/disk0/data/disease_symptom/"+de_disease_name+"_ori/"  # 输入图片文件路径
            
            data_froi = json.loads(v3['_value'])
            
            save_filename = str(v3['de_symptom_id'])+"_"+filename
            
            copy_and_save_image(input_path, output_path_ori, save_filename)
            
            froi_img(input_path, output_path, save_filename, data_froi)
            

# 多
def froi_img2(image_path, output_path, filename, data):
    try:
        img = cv2.imread(image_path)
        height, width = img.shape[:2]
        image = np.zeros((height, width, 3), np.uint8)
        
        for v in data:
            
            points = v['handles']['points']
            i = 0
            c = len(points)
            area = []
            while i < c: 

                area.append([int(points[i]['x']),int(points[i]['y'])])
                
                i+=1
                
                if i == c:
                    area.append([int(points[0]['x']),int(points[0]['y'])])

            cv2.fillPoly(image,np.array([area]), color=(255, 255, 255))
        
        cv2.imwrite(output_path+filename, image)
    except Exception as e:
        # 异常处理代码
        print(e)


def froi2():
    i = 44
    size = 100
    while i <= 100:
        page = i * size
        i += 1
        
        sql_str2 = "select de_instances_id from hos_database.de_instance_new_mark as m " \
                    " where m.de_organ_name in ('全肺','右肺','右肺中叶','右肺前叶','右肺后叶','左肺','左肺前叶前部','左肺前叶后部','左肺后叶') and mark_type = 'FreehandRoi'" \
                    " limit " + str(page) + ", " + str(size)

        
        rows2 = query(sql_str2)
        
        de_instance_id = ''
        for v2 in rows2:
            de_instance_id += str(v2['de_instances_id'])+','
            
        de_instance_id = de_instance_id.strip(',')
        
    
        sql_str3 = 'select m.de_instances_id, m._value, m.de_organ_id, m.de_organ_name, m.de_disease_id, m.de_disease_name, m.de_symptom_id, m.de_symptom_name, i.ethnic_group, i.jpeg, i.png, i.is_boost, i.boost_jpeg, i.boost_png' \
                    ' from hos_database.de_instances as i' \
                    ' left join hos_database.de_instance_new_mark as m on m.de_instances_id = i.id ' \
                    ' where m.de_instances_id in (' + de_instance_id + ') and mark_type = "FreehandRoi"'

        
        rows3 = query(sql_str3)
        
        print(i)
        if len(rows3) == 0:
            continue
        
        frois = []
        data_frois = {}
        
        for vv in rows3:
            
            if data_frois.get(vv['de_instances_id']) is None :
                frois.append(vv)
                data_frois[vv['de_instances_id']] = []
            
            data_frois[vv['de_instances_id']].append(json.loads(vv['_value']))

            
        for v3 in frois:
            
            png = ''
                    
            if v3['is_boost'] == 1:
                png = v3['boost_png']
            else:
                png = v3['png']
            
            filename = png.split("/")[-1]
                
            # input_path = "/disk0/data/images/disease/"+v3['de_disease_name']+"/"+filename  # 输入图片文件路径
            
            output_path = "/disk0/data/organ02/lungs/"  # 输入图片文件路径
            
            output_path_ori = "/disk0/data/organ02/lungs_ori/"  # 输入图片文件路径
            
            save_filename = str(v3['de_organ_id'])+"_"+filename
                        
            download_image(png, output_path_ori, save_filename)
            
            froi_img2(output_path_ori+save_filename, output_path, save_filename, data_frois[v3['de_instances_id']])
            
def froi22(name):
        
    sql_str = "select study_instance_uid, manufacturers_model_name from hos_database.dcm_list as d " \
                " where manufacturers_model_name ='"+name+"'" \
                " order by id desc limit 20 "

    
    rows = query(sql_str)
    u1 = r'https://viewer.ai-vpet.cn/viewer/'
    # u2 = r'?token=bXOBCY7M49NpTTGPHApDATRu%2FgY0PRp6ofB30I%2BfH3Zp%2BAZz4hoceaj9FDqy%2FGEA%2BTQvLmBGmMn0y0DPA67pVf6JfQR0LQm0qrBtuCPHHG%2F8x8di3C9Fu2sCwRXbyh93ftjY7%2Bi%2FDOQ6Ib4y1EHafg%3D%3D'
    u2 = r'?token=L4CCTl5V4p%2FoFxXzhkoI%2BYj8LOS3oyRLXVX3KSCE1vZM7RpBTQsmNVUBKKmAzHorWTmBoAN2z7wRnoczmB6HytITFLtw9FCFTmIkIBrpyJaI1QZS3uc6peZTEpmcyBhICCZ%2B5F0tZOhe78Be5DoYEw%3D%3D'
    print(name)
    print('\n')
    for v in rows:
        print(u1+v['study_instance_uid']+u2)
        print('\n')
            
            
def froi24():
    
    names2 = [
        '1.2.410.200067.100.1.202306132151100227.16179',
        '1.2.410.200067.100.1.202306111919530050.13775',
        '1.2.410.200067.100.1.202306101808590285.1618',
        '1.2.410.200067.100.1.202306221642290522.30621',
        '1.2.410.200067.100.1.202406211032310879.15457',
        '1.2.410.200067.100.1.202408021330260999.3052',
        '1.2.276.0.7230010.3.3.1.20240828000000000.859487075',
        '1.2.840.197608.1.15212033170821.1788',
        '1.2.840.197608.1.15212033170821.16',
        '172.115.1207.167.1218.1219.20240827204621.114',
        '1228.184.1232.1223.158.197.20240828173020.1',
        '1.2.156.112677.1000.101.20240830182741.1',
        '1.2.156.112677.1000.101.20240830180240.31'
    ]
    
    # encoding:设置编码,默认是ascii,一般设置为utf-8,可支持中文;
    #style_compression保持默认即可
    work_book = xlwt.Workbook(encoding='utf-8')
    
    # 创建一个sheet对象,相当于创建一个sheet页,填入sheet页的名称
    sheet_data = work_book.add_sheet('sheet1')
    
    # 向sheet页中添加数据:函数write,参数分别带入(行号,列号,填入的值),行和列从0开始。
    #其中还有一个参数style=Style.default_style,用于设置字体/单元格格式/对齐方式等,不设置会使用默认值。
    sheet_data.write(0,0,'医院名称') # 第1行第1列写入数据 此处先不用样式,后面介绍
    sheet_data.write(0,1,'联系电话')
    sheet_data.write(0,2,'医院码')
    sheet_data.write(0,3,'来源')
    sheet_data.write(0,4,'uid')
    sheet_data.write(0,5,'厂家')
    sheet_data.write(0,6,'url') 
    
    for k,v in enumerate(names2):
        
        sql_str = "select it.id, study_instance_uid, manufacturers_model_name, it._value "\
            " from hos_database.de_instance_tag as it " \
            " left join hos_database.de_instances as i on it.de_instances_id = i.id " \
            " left join hos_database.de_series as s on i.de_series_id = s.id " \
            " left join hos_database.de_study as t on s.de_study_id = t.id " \
            " where study_instance_uid ='"+v+"'" 

        rows = query(sql_str)
        
        sql_str2 = "select h._name, h.hospital_code, h.create_phone, h.is_bk "\
            " from hos_database.dcm_list as l " \
            " left join hos_database.hospital_main as h on l.hospital_code = h.hospital_code " \
            " where study_instance_uid ='"+v+"'" 

        rows2 = query(sql_str2)
        
        u1 = r'https://viewer.ai-vpet.cn/viewer/'
        # u2 = r'?token=bXOBCY7M49NpTTGPHApDATRu%2FgY0PRp6ofB30I%2BfH3Zp%2BAZz4hoceaj9FDqy%2FGEA%2BTQvLmBGmMn0y0DPA67pVf6JfQR0LQm0qrBtuCPHHG%2F8x8di3C9Fu2sCwRXbyh93ftjY7%2Bi%2FDOQ6Ib4y1EHafg%3D%3D'
        u2 = r'?token=g4BFXADwt8fWcqVddlQSo4iqx8O%2BWBJwtrg11nXHj3z0tsQX0ZaGNivn5jYHoMEZN4jltj5ZU%2BbP4ztqNbwYEZhTXOf0J0szHsf7a19lWJPIutkw4I3Gg%2B474FhY73CqQn0lv%2FmcJK9v37hyf24Z6g%3D%3D'

        data = json.loads(rows[0]['_value'])
        
        url = u1+rows[0]['study_instance_uid']+u2
        
        
        # 0 vpet  1 谛宝医生 2 必康
        is_bk = ''
        if rows2[0]['is_bk'] == 0 :
            is_bk = 'vpet'
        elif rows2[0]['is_bk'] == 1 :
            is_bk = '谛宝医生'
        elif rows2[0]['is_bk'] == 2 :
            is_bk = '必康'
        
        l = k+1
        
        sheet_data.write(l,0,rows2[0]['_name'])
        sheet_data.write(l,1,rows2[0]['create_phone'])
        sheet_data.write(l,2,rows2[0]['hospital_code'])
        sheet_data.write(l,3,is_bk)
        sheet_data.write(l,4,v)
        sheet_data.write(l,5,data['0008,0070']['Value'])
        sheet_data.write(l,6,url) 

    
    #保存为后缀为xls或者xlsx的excel表
    #保存为xlsx时,后续的设置样式不会生效 所以我们保存为xls后缀文件
    work_book.save('1.xls')
    
    
def froi31(image_path):
    try:
        img = cv2.imread(image_path)
        
        a = np.mean(img)
        
        print(a)
        
    except Exception as e:
        # 异常处理代码
        print(e)
            
                   
if __name__ == '__main__':
    de_disease_names = [
        "乳腺肿瘤",
        "会阴疝",
        "体表肿物",
        "便秘",
        "关节炎",
        "关节脱位",
        "其他",
        "前列腺结石",
        "前列腺肿大",
        "占位性病变",
        "右心房增大",
        "后腔静脉裂孔疝",
        "哮喘",
        "子宫蓄脓",
        "小肝征",
        "尿道结石",
        "尿闭",
        "巨大团块",
        "巨结肠",
        "幼龄动物",
        "幽门梗阻",
        "心源性肺水肿",
        "心脏增大",
        "支气管炎",
        "椎体脱位",
        "椎体错位",
        "横膈疝",
        "气管塌陷",
        "气胸",
        "犬未到达T12后缘",
        "猫未到达T13后缘",
        "皮下气肿",
        "皮下积气",
        "肋骨肋软骨矿化",
        "肝区占位性病变",
        "肝脏增大",
        "肝脏缩小",
        "肝脏肿大",
        "肠梗阻",
        "肠道异物",
        "肺不张",
        "肺大疱",
        "肺气肿",
        "肺水肿",
        "肺炎",
        "肾结石",
        "肾肿大",
        "肾萎缩",
        "肿瘤",
        "肿瘤转移性改变",
        "胃体积增大",
        "胃内异物",
        "胃后区体积增大",
        "胃扩张扭转",
        "胃扩张积气",
        "胃肠道穿孔",
        "胆囊壁矿化",
        "胆囊结石",
        "胸腔积液",
        "脾脏肿大",
        "腹壁疝",
        "腹股沟疝",
        "腹腔积气",
        "腹腔积液",
        "腹膜心包疝",
        "膀胱破裂",
        "膀胱结石",
        "输尿管结石",
        "锥体脱位",
        "食道异物",
        "食道积气",
        "食道积液",
        "食道积食",
        "食道裂孔疝",
        "骨折",
        "骨折后愈合",
        "骨质增生",
        "骨质疏松",
        "髋关节发育不良"
    ]
    
    de_organ_names = [
        "中腹区",
        "主动脉(弓)",
        "体表",
        "全心",
        "全肺",
        "前列腺区",
        "前腹区",
        "双侧皮下",
        "右侧皮下",
        "右心室",
        "右心房",
        "右肺",
        "右肺中叶",
        "右肺前叶",
        "右肺后叶",
        "后腔静脉",
        "后腹区",
        "子宫及其附件区",
        "子宫及附件区",
        "小肠",
        "尺骨",
        "尾椎",
        "尿道",
        "左侧皮下",
        "左心室",
        "左心房",
        "左心脏",
        "左肺",
        "左肺前叶前部",
        "左肺前叶后部",
        "左肺后叶",
        "左腿",
        "心前三角区",
        "心包",
        "心区",
        "心胸三角区",
        "掌骨",
        "桡骨",
        "椎隔三角区",
        "皮下",
        "结肠",
        "肋软骨",
        "肋骨",
        "肝脏",
        "股骨",
        "肱骨",
        "肺",
        "肾",
        "胃",
        "胆囊",
        "背侧皮下",
        "背部皮下",
        "胫骨",
        "胸椎",
        "胸骨",
        "脾脏",
        "腓骨",
        "腰椎",
        "腹侧皮下",
        "腹膜腔",
        "腹部皮下",
        "膀胱",
        "膝关节",
        "花瓣",
        "荐椎",
        "趾骨",
        "输尿管",
        "近贲门处",
        "骨盆区",
        "髋关节"
    ]

    # for v in de_organ_names:
    #     print(v)
    #     cp_img(v)
    
    # img2()
    
    # froi('胸部','肺炎')
    # froi2()
    
    names = [
        # 'Copyright(C) SUZHOUHEYI MEDICAL',
        # 'Copyright(C)E-COM',
        # 'CT Q560a',
        # 'DBC DR',
        # 'E-COM DR-2000 VET Digital Radiography Operating Console Software',
        # 'E-COM DR-2000 VET Digital Radiography Operating Console Software v6.0',
        # 'E-COM DR-2000 VET Êý×ÖXÉäÏßÊÞÓÃϵͳ¿ØÖÆÈí¼þ v6.0',
        # 'E-COM DR-2000 VET 数字X射线兽用系统控制软件 v6.0',
        # 'ELITE 2000',
        # 'Monet64',
        # 'Quantum CT Q560a',
        # 'Quantum CT T752',
        'RayNova DR',
        'Supernova C5',
        'Superpet',
        'VanGogh P8',
        'VanGogh SC8',
        'Xmaru Series'
    ]

    # for v in names2:
    #     
    froi24()
        
    
    # image_path = '/Users/haoyanbin/Downloads/28bdb020-05eb73c5-df89b21c-df391c83-5022fd3d.png'
    # image_path2 = '/Users/haoyanbin/Desktop/db0d2877-16a5787c-4c8d67c4-071097fc-deee3b7e.png'
    
    # froi31(image_path)
    # froi31(image_path2)