adm18/IMPAX/auto.py

148 lines
5.7 KiB
Python
Raw Permalink Normal View History

2025-09-16 05:20:19 +00:00
import time
from pywinauto.application import Application
# app = Application(backend="uia").start("notepad.exe")
# app['未命名 - 記事本'].type_keys("%FX")
#from pywinauto.timings import Timings
#Timings.window_find_timeout = 50.0
def legacy_properties(ctrl):
d = {}
for c in ctrl.children():
p = c.legacy_properties()
d[p['Name']] = p['Value']
return d
# app = Application().start(r"C:\Program Files (x86)\AGFA\IMPAX Client\AppStart.exe")
try:
app = Application().connect(path=r"C:\Program Files (x86)\AGFA\IMPAX Client\6.5.2.114\impax-client-main.exe")
except:
app = Application().start(r"C:\Program Files (x86)\AGFA\IMPAX Client\AppStart.exe")
app = Application().connect(path=r"C:\Program Files (x86)\AGFA\IMPAX Client\6.5.2.114\impax-client-main.exe")
app2 = Application('uia', allow_magic_lookup=False).connect(path=r"C:\Program Files (x86)\AGFA\IMPAX Client\6.5.2.114\impax-client-main.exe")
# print( app.exists(['IMPAX 6.5.2.114 Enterprise Unlimited']))
# exit()
# if not app['IMPAX 6.5.2.114 Enterprise Unlimited'].exists('重新設定'):
def login():
time.sleep(1)
# app['IMPAX 6.5.2.114'].print_ctrl_ids(filename='ids_login.txt')
app['IMPAX 6.5.2.114']['使用者識別碼:Edit'].type_keys('004552')
time.sleep(1)
app['IMPAX 6.5.2.114']['密碼:Edit'].type_keys('n122119493')
app['IMPAX 6.5.2.114']['登入'].click()
time.sleep(20)
def fetch(patient_id, modality='MR'):
# print(dir(app['IMPAX 6.5.2.114 Enterprise Unlimited']))
try:
if app['IMPAX 6.5.2.114 Enterprise Unlimited'].exists('登出'):
pass
except:
login()
#print(dir(app['IMPAX 6.5.2.114 Enterprise Unlimited']['登出'].parent()))
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['登出'].parent().click_input()
#try:
# app['IMPAX 6.5.2.114 Enterprise Unlimited']['登出'].parent().click_input()
#except:
# login()
#app['IMPAX 6.5.2.114 Enterprise Unlimited'].wait('visible')
if not app['IMPAX 6.5.2.114 Enterprise Unlimited'].exists('重新設定'):
app['IMPAX 6.5.2.114 Enterprise Unlimited']['登出'].parent().click_input()
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['重新設定'].wait('enabled')
#app['IMPAX 6.5.2.114 Enterprise Unlimited'].window(auto_id="resetButton").click()
#app['IMPAX 6.5.2.114 Enterprise Unlimited'].print_ctrl_ids(depth=3, filename='ids_uia.txt')
app['IMPAX 6.5.2.114 Enterprise Unlimited'].print_ctrl_ids(filename='ids_uia.txt')
app['IMPAX 6.5.2.114 Enterprise Unlimited']['重新設定'].click()
app['IMPAX 6.5.2.114 Enterprise Unlimited']['病歷號碼Edit'].type_keys(patient_id)
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['影像檢查設備ComboBox'].click_input()
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['影像檢查設備ComboBox'].select(modality)
app['IMPAX 6.5.2.114 Enterprise Unlimited']['搜尋Button'].click()
#print(dir(app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_images']))
#print(app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_images'].children())
#print(app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].get_properties())
#print(app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].legacy_properties())
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].print_control_identifiers()
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].capture_as_image().save('1.png')
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].click_input()
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].capture_as_image().save('2.png')
#app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].print_control_identifiers()
#print(app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'])
#print(app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].get_properties())
#print(app['IMPAX 6.5.2.114 Enterprise Unlimited']['study.num_imagesHeader'].legacy_properties())
study_list = []
#app2 = Application('uia').connect(path=r"C:\Program Files (x86)\AGFA\IMPAX Client\6.5.2.114\impax-client-main.exe")
app2['IMPAX 6.5.2.114 Enterprise Unlimited'].print_ctrl_ids(filename='ids_uia.txt')
#print(dir(app2['IMPAX 6.5.2.114 Enterprise Unlimited']))
#for c in app2['IMPAX 6.5.2.114 Enterprise Unlimited']['描述內容Pane'].children():
#for c in app2['IMPAX 6.5.2.114 Enterprise Unlimited'].child_window(auto_id="grid", control_type="Pane").children():
for c in app2['IMPAX 6.5.2.114 Enterprise Unlimited'].child_window(title="描述內容", control_type="Pane").children():
# print(c)
p = legacy_properties(c)
if 'patient.patient_id' in p and p['patient.patient_id'] == patient_id:
# print(dir(c))
# print(c.legacy_properties())
print(c.texts()[0], p['View'], p['study.accession_number'], p['study.modality'], p['study.study_date'], p['study.num_images'], p['study.study_description'])
# exit()
if int(p['study.num_images'])>10:
study_list.append((c.texts()[0], p))
exit()
# Available
# VIEWABLE
# VIEWING
# nearline
for c, p in study_list:
print(c)
ctrl = app['IMPAX 6.5.2.114 Enterprise Unlimited'][c].children()[0]
# print(ctrl.texts())
# print(dir(ctrl))
app['IMPAX 6.5.2.114 Enterprise Unlimited'][c].children()[0].double_click_input()
# time.sleep(10)
# app['IMPAX 6.5.2.114 Enterprise Unlimited'].print_ctrl_ids(filename='ids_view.txt')
exit()
fetch('3009684')
#fetch('2228813')
#fetch('2541371', 'CT')