get visit
parent
28431a348b
commit
219fb09612
|
@ -18,5 +18,6 @@
|
||||||
</field>
|
</field>
|
||||||
<foot>
|
<foot>
|
||||||
<button string="Generate" type="success" method="gen_visit"/>
|
<button string="Generate" type="success" method="gen_visit"/>
|
||||||
|
<button string="Clear" type="danger" icon="remove" method="clear_visit"/>
|
||||||
</foot>
|
</foot>
|
||||||
</form>
|
</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='draft' 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='waiting_treatment' 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="patient_id"/>
|
||||||
<field name="cycle_id"/>
|
<field name="cycle_id"/>
|
||||||
<field name="number"/>
|
<field name="number"/>
|
||||||
|
|
|
@ -85,7 +85,7 @@ class GenVisit(Model):
|
||||||
|
|
||||||
def gen_visit(self,ids,context):
|
def gen_visit(self,ids,context):
|
||||||
obj=self.browse(ids)[0]
|
obj=self.browse(ids)[0]
|
||||||
#time_stop=obj.date_to[11:]
|
visit_obj=get_model('clinic.visit')
|
||||||
days=[
|
days=[
|
||||||
obj.monday and 1 or 0,
|
obj.monday and 1 or 0,
|
||||||
obj.tuesday and 2 or 0,
|
obj.tuesday and 2 or 0,
|
||||||
|
@ -94,17 +94,12 @@ class GenVisit(Model):
|
||||||
obj.friday and 5 or 0,
|
obj.friday and 5 or 0,
|
||||||
]
|
]
|
||||||
days=[day for day in days if day]
|
days=[day for day in days if day]
|
||||||
print("days ", days)
|
|
||||||
if not days:
|
if not days:
|
||||||
raise Exception("Please select Day")
|
raise Exception("Please select Day")
|
||||||
#duration=datetime.strptime(obj.date_to,FMT_DATETIME)-datetime.strptime(obj.date_from,FMT_DATETIME)
|
|
||||||
# loop patient
|
|
||||||
visit_vals=[]
|
visit_vals=[]
|
||||||
date_from=datetime.strptime(obj.date_from,FMT_DATETIME)
|
date_from=datetime.strptime(obj.date_from,FMT_DATETIME)
|
||||||
date_to=datetime.strptime(obj.date_to,FMT_DATETIME)
|
date_to=datetime.strptime(obj.date_to,FMT_DATETIME)
|
||||||
#total_days=(date_to-date_from).days
|
|
||||||
for line in obj.lines:
|
for line in obj.lines:
|
||||||
# loop days in weekend
|
|
||||||
ntoday=1
|
ntoday=1
|
||||||
day_total=(date_to-date_from).days+ntoday
|
day_total=(date_to-date_from).days+ntoday
|
||||||
for weekday in days:
|
for weekday in days:
|
||||||
|
@ -114,7 +109,7 @@ class GenVisit(Model):
|
||||||
start_date+=timedelta(days=1)
|
start_date+=timedelta(days=1)
|
||||||
wd=start_date.weekday()
|
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):
|
if start_date.strftime(FMT_DATE) > date_to.strftime(FMT_DATE):
|
||||||
continue
|
continue
|
||||||
count=0
|
count=0
|
||||||
|
@ -131,21 +126,16 @@ class GenVisit(Model):
|
||||||
}
|
}
|
||||||
visit_vals.append(vals)
|
visit_vals.append(vals)
|
||||||
count+=7
|
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
|
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:
|
for vals in visit_vals:
|
||||||
visit_obj.create(vals)
|
visit_obj.create(vals)
|
||||||
|
|
||||||
|
@ -157,5 +147,95 @@ class GenVisit(Model):
|
||||||
'flash': 'Generate OK',
|
'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()
|
GenVisit.register()
|
||||||
|
|
||||||
|
|
|
@ -199,8 +199,4 @@ class Patient(Model):
|
||||||
vals['partner_id']=partner_id
|
vals['partner_id']=partner_id
|
||||||
super().write(ids,vals,**kw)
|
super().write(ids,vals,**kw)
|
||||||
|
|
||||||
def generate_visit(self,ids,context={}):
|
|
||||||
obj=self.browse(ids)[0]
|
|
||||||
pass
|
|
||||||
|
|
||||||
Patient.register()
|
Patient.register()
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
===
|
||||||
|
- skip holiday
|
||||||
====
|
====
|
||||||
- import data
|
- import data
|
||||||
- payment
|
- payment
|
||||||
|
|
Loading…
Reference in New Issue