get visit
parent
28431a348b
commit
219fb09612
|
@ -18,5 +18,6 @@
|
|||
</field>
|
||||
<foot>
|
||||
<button string="Generate" type="success" method="gen_visit"/>
|
||||
<button string="Clear" type="danger" icon="remove" method="clear_visit"/>
|
||||
</foot>
|
||||
</form>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
<!--<calendar model="clinic.visit" states='waiting_treatment' date_field="date_visit" colors='{"#090":[["cycle","=",1]],"#2400ff":[["cycle","=",2]],"#ebff00":[["cycle","=",3]],"#f20000":[["cycle","=",4]]}'>-->
|
||||
<calendar model="clinic.visit" states='waiting_treatment' start_field="time_start" end_field="time_stop" colors='{"#090":[["cycle","=",1]],"#2400ff":[["cycle","=",2]],"orange":[["cycle","=",3]],"#f20000":[["cycle","=",4]]}'>
|
||||
<calendar model="clinic.visit" states='draft' start_field="time_start" end_field="time_stop" colors='{"#090":[["cycle","=",1]],"#2400ff":[["cycle","=",2]],"orange":[["cycle","=",3]],"#f20000":[["cycle","=",4]]}'>
|
||||
<field name="patient_id"/>
|
||||
<field name="cycle_id"/>
|
||||
<field name="number"/>
|
||||
|
|
|
@ -85,7 +85,7 @@ class GenVisit(Model):
|
|||
|
||||
def gen_visit(self,ids,context):
|
||||
obj=self.browse(ids)[0]
|
||||
#time_stop=obj.date_to[11:]
|
||||
visit_obj=get_model('clinic.visit')
|
||||
days=[
|
||||
obj.monday and 1 or 0,
|
||||
obj.tuesday and 2 or 0,
|
||||
|
@ -94,17 +94,12 @@ class GenVisit(Model):
|
|||
obj.friday and 5 or 0,
|
||||
]
|
||||
days=[day for day in days if day]
|
||||
print("days ", days)
|
||||
if not days:
|
||||
raise Exception("Please select Day")
|
||||
#duration=datetime.strptime(obj.date_to,FMT_DATETIME)-datetime.strptime(obj.date_from,FMT_DATETIME)
|
||||
# loop patient
|
||||
visit_vals=[]
|
||||
date_from=datetime.strptime(obj.date_from,FMT_DATETIME)
|
||||
date_to=datetime.strptime(obj.date_to,FMT_DATETIME)
|
||||
#total_days=(date_to-date_from).days
|
||||
for line in obj.lines:
|
||||
# loop days in weekend
|
||||
ntoday=1
|
||||
day_total=(date_to-date_from).days+ntoday
|
||||
for weekday in days:
|
||||
|
@ -114,7 +109,7 @@ class GenVisit(Model):
|
|||
start_date+=timedelta(days=1)
|
||||
wd=start_date.weekday()
|
||||
|
||||
#XXX should gen only in scoop
|
||||
#XXX should gen only in scope
|
||||
if start_date.strftime(FMT_DATE) > date_to.strftime(FMT_DATE):
|
||||
continue
|
||||
count=0
|
||||
|
@ -131,21 +126,16 @@ class GenVisit(Model):
|
|||
}
|
||||
visit_vals.append(vals)
|
||||
count+=7
|
||||
|
||||
dom=[]
|
||||
dom.append(['time_start','>=','%s %s'%(tmp.strftime(FMT_DATE)[0:10],' 00:00:00')])
|
||||
dom.append(['time_stop','<=','%s %s'%(tmp.strftime(FMT_DATE)[0:10],' 23:59:59')])
|
||||
dom.append(['patient_id', '=', line.patient_id.id])
|
||||
dom.append(['state','=','draft'])
|
||||
vids=visit_obj.search(dom)
|
||||
visit_obj.delete(vids)
|
||||
start_date=tmp
|
||||
|
||||
if visit_vals:
|
||||
dom=[]
|
||||
dom.append(['time_start','>=','%s %s'%(date_from.strftime(FMT_DATE)[0:10],' 00:00:00')])
|
||||
dom.append(['time_stop','<=','%s %s'%(start_date.strftime(FMT_DATE)[0:10],' 23:59:59')])
|
||||
# search patient
|
||||
dom.append(['state','=','draft'])
|
||||
patient_ids=[visit['patient_id'] for visit in visit_vals]
|
||||
dom.append(['patient_id', 'in', tuple(patient_ids)])
|
||||
print("dom ", dom)
|
||||
visit_obj=get_model('clinic.visit')
|
||||
visit_ids=visit_obj.search(dom)
|
||||
# delete old visit (same duration)
|
||||
visit_obj.delete(visit_ids)
|
||||
for vals in visit_vals:
|
||||
visit_obj.create(vals)
|
||||
|
||||
|
@ -157,5 +147,95 @@ class GenVisit(Model):
|
|||
'flash': 'Generate OK',
|
||||
}
|
||||
|
||||
def clear_visit(self,ids,context={}):
|
||||
obj=self.browse(ids)[0]
|
||||
days=[
|
||||
obj.monday and 1 or 0,
|
||||
obj.tuesday and 2 or 0,
|
||||
obj.wednesday and 3 or 0,
|
||||
obj.thursday and 4 or 0,
|
||||
obj.friday and 5 or 0,
|
||||
]
|
||||
days=[day for day in days if day]
|
||||
visit_ids=[]
|
||||
date_from=datetime.strptime(obj.date_from,FMT_DATETIME)
|
||||
date_to=datetime.strptime(obj.date_to,FMT_DATETIME)
|
||||
visit_obj=get_model("clinic.visit")
|
||||
if days:
|
||||
for line in obj.lines:
|
||||
# loop days in weekend
|
||||
ntoday=1
|
||||
day_total=(date_to-date_from).days+ntoday
|
||||
for weekday in days:
|
||||
wd=date_from.weekday()
|
||||
start_date=date_from
|
||||
while wd != weekday-1:
|
||||
start_date+=timedelta(days=1)
|
||||
wd=start_date.weekday()
|
||||
|
||||
#XXX should gen only in scop
|
||||
if start_date.strftime(FMT_DATE) > date_to.strftime(FMT_DATE):
|
||||
continue
|
||||
count=0
|
||||
while count < day_total:
|
||||
tmp=start_date+timedelta(days=count)
|
||||
time_start="%s 00:00:00" % (tmp.strftime(FMT_DATE))
|
||||
time_stop="%s 23:59:59" % (tmp.strftime(FMT_DATE))
|
||||
patient_id=line.patient_id.id
|
||||
dom=[]
|
||||
dom.append(['time_start','>=','%s'%time_start])
|
||||
dom.append(['time_stop','<=','%s'%time_stop])
|
||||
dom.append(['patient_id','=','%s'%patient_id])
|
||||
dom.append(['state','=','draft'])
|
||||
count+=7
|
||||
print(dom)
|
||||
vids=visit_obj.search(dom)
|
||||
if vids:
|
||||
visit_ids.append(vids[0])
|
||||
start_date=tmp
|
||||
else:
|
||||
time_start=obj.date_from
|
||||
time_stop=obj.date_to
|
||||
for line in obj.lines:
|
||||
patient_id=line.patient_id.id
|
||||
dom=[]
|
||||
dom.append(['time_start','>=','%s'%time_start])
|
||||
dom.append(['time_stop','<=','%s'%time_stop])
|
||||
dom.append(['patient_id','=','%s'%patient_id])
|
||||
dom.append(['state','=','draft'])
|
||||
vids=visit_obj.search(dom)
|
||||
if vids:
|
||||
visit_ids.append(vids[0])
|
||||
if visit_ids:
|
||||
print("visit_ids ", len(visit_ids))
|
||||
get_model("clinic.visit").delete(visit_ids)
|
||||
return {
|
||||
'next': {
|
||||
'name': 'clinic_patient',
|
||||
'mode': 'list',
|
||||
},
|
||||
'flash': 'Clear OK',
|
||||
}
|
||||
|
||||
def _clear_visit(self,ids,context):
|
||||
obj=self.browse(ids)[0]
|
||||
visit_obj=get_model("clinic.visit")
|
||||
for line in obj.lines:
|
||||
patient_id=line.patient_id
|
||||
dom=[]
|
||||
dom.append(['patient_id','=',patient_id.id])
|
||||
dom.append(['state','=','draft'])
|
||||
# clear
|
||||
# only from to and day
|
||||
visit_ids=visit_obj.search(dom)
|
||||
visit_obj.delete(visit_ids)
|
||||
return {
|
||||
'next': {
|
||||
'name': 'clinic_patient',
|
||||
'mode': 'list',
|
||||
},
|
||||
'flash': 'Clear OK',
|
||||
}
|
||||
|
||||
GenVisit.register()
|
||||
|
||||
|
|
|
@ -199,8 +199,4 @@ class Patient(Model):
|
|||
vals['partner_id']=partner_id
|
||||
super().write(ids,vals,**kw)
|
||||
|
||||
def generate_visit(self,ids,context={}):
|
||||
obj=self.browse(ids)[0]
|
||||
pass
|
||||
|
||||
Patient.register()
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
===
|
||||
- skip holiday
|
||||
====
|
||||
- import data
|
||||
- payment
|
||||
|
|
Loading…
Reference in New Issue