-
Notifications
You must be signed in to change notification settings - Fork 0
/
openemr_session.rb
141 lines (126 loc) · 3.13 KB
/
openemr_session.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# To change this template, choose Tools | Templates
# and open the template in the editor.
def populate_fields(target,data)
data.each{|key,value|target.text_field(:name=>key).set value}
end
def find_or_create_patient(os,data,sex)
fill_patient_form(os,data,sex)
row_found = false
row_to_click = false
if(os.brw.div(:id=>"searchResults").table[1].exists?)
os.brw.div(:id=>"searchResults").table.rows.each do |row|
begin
if(row.cells[1].text=~/#{data["form_lname"]}, #{data["form_fname"]}/)
if(row.cells[3].text=~/#{data["form_DOB"]}/)
if(row.cells[4].text=~/#{sex}/)
row_found=true
row_to_click=row
end
end
end
rescue=>e
end
end
end
if(row_found)
row_to_click.click
else
os.brw.button.click
end
sleep 3
os.brw.windows[0].use
end
def find_or_create_numeric_patient(os,num,sex)
pat=PatientData.new(num,sex)
find_or_create_patient(os,pat.fields,pat.sex)
end
def fill_patient_form(os,data,sex)
os.goto_search
populate_fields(os.main_window(),data)
os.main_window().select_list(:id=>"form_sex").select sex
os.main_window().button(:id=>"create").click
os.brw.window(:url=>/new_search_popup.php/).use
end
def create_patient(os,data,sex)
fill_patient_form(os,data,sex)
os.brw.button.click
sleep 3
os.brw.windows[0].use
end
def verify_or_create_appointment(os,slot_num)
os.goto_calendar
times=os.cal_frame.td(:id=>"times").table
div_day=os.cal_frame.div(:class=>"calendar_day")
times[slot_num].text
if div_day.span(:class=>"appointment",:text=>/\A#{times[slot_num].text}/).exists?
return false
else
times[slot_num].click
os.brw.window(:url=>/add_edit_event.php/).use
os.brw.button(:id=>"form_save").click
sleep 3
os.brw.windows[0].use
return true
end
end
class OpenemrSession
@brw
def brw
return @brw
end
def initialize(b)
@brw = b
ObjectSpace.define_finalizer(self, proc{@brw.close})
end
def main_window()
@brw.frame(:name,"RTop").wait_until_present
[email protected](:name,"RTop")
return ret
end
def nav()
@brw.frame(:name,"left_nav").wait_until_present
[email protected](:name,"left_nav")
return nav
end
def goto_nav(id)
nav().link(:id=>id).click
end
def goto_search()
goto_nav("new0")
sleep 2
end
def goto_calendar()
goto_nav("cal0")
end
def cal_frame
main_window.frames[0]
end
def goto_next_day
cal_frames.img(:id=>"nextday").click
end
def goto_prev_day
cal_frames.img(:id=>"prevday").click
end
def goto_today
cal_frames.link(:name=>"bnsubmit").click
end
def select_pat(name)
goto_search()
sleep 0.5 until begin
main_window.text_field(:id=>'form_lname').exists?
rescue
p "Waiting"
end
lname=main_window.text_field(:id=>'form_lname')
lname.click
lname.set name
main_window.button(:id=>'search').click
@brw.window(:url=>/patient_select.php/).use
@brw.div(:id=>"searchResults").table[1].click
sleep 1 until begin
@brw.windows[0].use
rescue
end
end
end