gent visit

conv_bal
watcha.h 2014-11-01 13:04:30 +07:00
parent 63bdaff4d9
commit 963b606d67
10 changed files with 103 additions and 15 deletions

View File

@ -3,5 +3,6 @@
<field name="view_cls">multi_view</field> <field name="view_cls">multi_view</field>
<field name="model">clinic.schedule</field> <field name="model">clinic.schedule</field>
<field name="modes">calendar,list,page,form</field> <field name="modes">calendar,list,page,form</field>
<field name="tabs">[["All",[]],["Draft",[["state","=","draft"]]],["Confirmed",[["state","=","confirmed"]]]]</field>
<field name="menu">clinic_menu</field> <field name="menu">clinic_menu</field>
</action> </action>

View File

@ -3,6 +3,6 @@
<field name="view_cls">multi_view</field> <field name="view_cls">multi_view</field>
<field name="model">clinic.visit</field> <field name="model">clinic.visit</field>
<field name="tabs">[["All",[]],["Draft",[["state","=","draft"]]],["Confirmed",[["state","=","confirmed"]]],["Cancelled",[["state","=","cancelled"]]]]</field> <field name="tabs">[["All",[]],["Draft",[["state","=","draft"]]],["Confirmed",[["state","=","confirmed"]]],["Cancelled",[["state","=","cancelled"]]]]</field>
<field name="modes">calendar,list,form</field> <field name="modes">list,form,calendar</field>
<field name="menu">clinic_menu</field> <field name="menu">clinic_menu</field>
</action> </action>

View File

@ -1,6 +1,7 @@
<list model="clinic.personal"> <list model="clinic.personal">
<field name="number"/> <field name="number"/>
<field name="name"/> <field name="name"/>
<field name="categ_id"/>
<field name="type"/> <field name="type"/>
<field name="state"/> <field name="state"/>
</list> </list>

View File

@ -1,11 +1,19 @@
<form model="clinic.schedule"> <form model="clinic.schedule" attrs='{"readonly":[["state","in",["confirmed"]]]}' show_company="1">
<head> <head>
<field name="state"/>
<button string="Options" dropdown="1"> <button string="Options" dropdown="1">
<item string="Copy" method="copy"/> <item string="Copy" method="copy"/>
</button> </button>
</head> </head>
<field name="time_start"/> <group form_layout="stacked">
<field name="time_start"/> <field name="time_start" span="3"/>
<field name="cycle_id"/> <field name="time_start" span="3"/>
<field name="nurses"/> <field name="cycle_id" span="3"/>
<newline/>
<field name="nurses" span="8"/>
</group>
<foot>
<button string="Confirm" type="success" method="confirm" states="draft" />
<button string="To Draft" type="default" icon="repeat" method="to_draft" states="confirmed" />
</foot>
</form> </form>

View File

@ -2,4 +2,5 @@
<field name="name"/> <field name="name"/>
<field name="time_start"/> <field name="time_start"/>
<field name="time_start"/> <field name="time_start"/>
<field name="state"/>
</list> </list>

View File

@ -5,6 +5,7 @@ class Address(Model):
_fields={ _fields={
"patient_id": fields.Many2One("clinic.patient","Patient"), "patient_id": fields.Many2One("clinic.patient","Patient"),
"personal_id": fields.Many2One("clinic.personal","Personal"),
} }
Address.register() Address.register()

View File

@ -2,6 +2,7 @@ from datetime import datetime, timedelta
from netforce.access import get_active_user from netforce.access import get_active_user
from netforce.model import Model, fields, get_model from netforce.model import Model, fields, get_model
from netforce.database import get_connection
FMT_DATE="%Y-%m-%d" FMT_DATE="%Y-%m-%d"
FMT_DATETIME="%Y-%m-%d %H:%M:%S" FMT_DATETIME="%Y-%m-%d %H:%M:%S"
@ -113,12 +114,15 @@ class GenVisit(Model):
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)
patients=[p.patient_id.id for p in obj.patient_lines] patients=[p.patient_id.id for p in obj.patient_lines if p.patient_id]
if not patients and obj.patient_type: if not patients and obj.patient_type:
patients=get_model("clinic.patient").search([['type','=',obj.patient_type]]) patients=get_model("clinic.patient").search([['type','=',obj.patient_type]])
elif patients:
pass
else: else:
raise Exception("Please select some patient or patient type") raise Exception("Please select some patient or patient type")
schedules={}
for patient_id in patients: for patient_id in patients:
ntoday=1 ntoday=1
day_total=(date_to-date_from).days+ntoday day_total=(date_to-date_from).days+ntoday
@ -135,14 +139,16 @@ class GenVisit(Model):
count=0 count=0
while count < day_total: while count < day_total:
tmp=start_date+timedelta(days=count) tmp=start_date+timedelta(days=count)
ttime_start="%s %s" % (tmp.strftime(FMT_DATE),date_from.strftime(FMT_DATETIME)[11:])
ttime_stop="%s %s" % (tmp.strftime(FMT_DATE),date_to.strftime(FMT_DATETIME)[11:])
vals={ vals={
'patient_id': patient_id, 'patient_id': patient_id,
'doctor_id': obj.doctor_id.id, 'doctor_id': obj.doctor_id.id,
'nurse_id': obj.nurse_id.id, 'nurse_id': obj.nurse_id.id,
'department_id': obj.department_id.id, 'department_id': obj.department_id.id,
'cycle_id': obj.cycle_id.id, 'cycle_id': obj.cycle_id.id,
'time_start': "%s %s" % (tmp.strftime(FMT_DATE),date_from.strftime(FMT_DATETIME)[11:]), 'time_start': ttime_start,
'time_stop': "%s %s" % (tmp.strftime(FMT_DATE),date_to.strftime(FMT_DATETIME)[11:]), 'time_stop': ttime_stop,
'state': 'draft', 'state': 'draft',
} }
visit_vals.append(vals) visit_vals.append(vals)
@ -156,11 +162,40 @@ class GenVisit(Model):
dom.append(['state','=','draft']) dom.append(['state','=','draft'])
vids=visit_obj.search(dom) vids=visit_obj.search(dom)
visit_obj.delete(vids) visit_obj.delete(vids)
key='%s-%s'%(vals['cycle_id'], vals['time_start'])
if not schedules.get(key):
schedules[key]={
'cycle_id': obj.cycle_id.id,
'time_start': ttime_start,
'time_stop': ttime_stop,
'state':'draft',
}
start_date=tmp start_date=tmp
for vals in visit_vals: for vals in visit_vals:
visit_obj.create(vals) visit_obj.create(vals)
nurse_ids=[]
for nurse_line in obj.nurse_lines:
nurse_id=nurse_line.nurse_id.id
# None
if nurse_id:
nurse_ids.append(nurse_id)
if not nurse_ids:
nurse_ids=get_model("clinic.personal").search([['type','=','nurse'],['categ_id','=',obj.nurse_categ_id.id]])
dom=[]
dom.append(['time_start','>=','%s %s'%(obj.date_from[0:10],' 00:00:00')])
dom.append(['time_stop','<=','%s %s'%(start_date.strftime(FMT_DATE)[0:10],' 23:59:59')])
dom.append(['cycle_id','=',obj.cycle_id.id])
schedule_obj=get_model("clinic.schedule")
schedule_ids=schedule_obj.search(dom)
schedule_obj.delete(schedule_ids)
for key, vals in schedules.items():
vals['nurses']=[('add', nurse_ids)]
schedule_obj.create(vals)
return { return {
'next': { 'next': {
'name': 'clinic_visit', 'name': 'clinic_visit',
@ -183,11 +218,33 @@ class GenVisit(Model):
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)
visit_obj=get_model("clinic.visit") visit_obj=get_model("clinic.visit")
patients=[p.patient_id.id for p in obj.patient_lines] schedule_obj=get_model("clinic.schedule")
patients=[p.patient_id.id for p in obj.patient_lines if p.patient_id]
if not patients and obj.patient_type: if not patients and obj.patient_type:
patients=get_model("clinic.patient").search([['type','=',obj.patient_type]]) patients=get_model("clinic.patient").search([['type','=',obj.patient_type]])
elif patients:
pass
else: else:
raise Exception("Please select some patient or patient type") #XXX search date to
dom=[]
dom.append(['time_start','>=','%s %s'%(obj.date_from[0:10],' 00:00:00')])
dom.append(['time_stop','<=','%s %s'%(obj.date_to[0:10],' 23:59:59')])
dom.append(['cycle_id','=',obj.cycle_id.id])
dom.append(['state','=','draft'])
vids=visit_obj.search(dom)
visit_ids.append(vids)
schedule_obj=get_model("clinic.schedule")
schedule_ids=schedule_obj.search(dom)
schedule_obj.delete(schedule_ids)
return {
'next': {
'name': 'clinic_gen_visit_form',
'mode': 'form',
},
'flash': 'Clear OK',
}
if days: if days:
for patient_id in patients: for patient_id in patients:
# loop days in weekend # loop days in weekend
@ -232,8 +289,13 @@ class GenVisit(Model):
if vids: if vids:
visit_ids.append(vids[0]) visit_ids.append(vids[0])
if visit_ids: if visit_ids:
print("visit_ids ", len(visit_ids))
get_model("clinic.visit").delete(visit_ids) get_model("clinic.visit").delete(visit_ids)
dom=[]
dom.append(['time_start','>=','%s %s'%(obj.date_from[0:10],' 00:00:00')])
dom.append(['time_stop','<=','%s %s'%(start_date.strftime(FMT_DATE)[0:10],' 23:59:59')])
dom.append(['cycle_id','=',obj.cycle_id.id])
schedule_ids=schedule_obj.search(dom)
schedule_obj.delete(schedule_ids)
return { return {
'next': { 'next': {
'name': 'clinic_visit', 'name': 'clinic_visit',
@ -242,6 +304,5 @@ class GenVisit(Model):
'flash': 'Clear OK', 'flash': 'Clear OK',
} }
GenVisit.register() GenVisit.register()

View File

@ -37,7 +37,7 @@ class Personal(Model):
"birthday": fields.Date("BirthDay",search=True), "birthday": fields.Date("BirthDay",search=True),
"department_id": fields.Many2One("clinic.department", "Department",search=True), "department_id": fields.Many2One("clinic.department", "Department",search=True),
"patients": fields.Many2Many("clinic.patient","Patients"), "patients": fields.Many2Many("clinic.patient","Patients"),
"addresses": fields.One2Many("address","related_id","Addresses"), "addresses": fields.One2Many("address","personal_id","Addresses"),
"comments": fields.One2Many("message","related_id","Comments"), "comments": fields.One2Many("message","related_id","Comments"),
"visits": fields.One2Many("clinic.visit","nurse_id","Visits"), "visits": fields.One2Many("clinic.visit","nurse_id","Visits"),
"hd_cases": fields.One2Many("clinic.hd.case","nurse_id","HD Cases"), "hd_cases": fields.One2Many("clinic.hd.case","nurse_id","HD Cases"),

View File

@ -19,11 +19,25 @@ class Schedule(Model):
"time_start": fields.DateTime("Time Start",required=True), "time_start": fields.DateTime("Time Start",required=True),
"time_stop": fields.DateTime("Time Stop",required=True), "time_stop": fields.DateTime("Time Stop",required=True),
'company_id': fields.Many2One("company","Company"), 'company_id': fields.Many2One("company","Company"),
'nurses': fields.Many2Many('clinic.nurse','Nurses'), 'nurses': fields.Many2Many('clinic.personal','Nurses'), # XXX domain
'state': fields.Selection([['draft','Draft'],['confirmed', 'Confirmed']],'State'),
} }
_defaults={ _defaults={
"company_id": lambda *a: get_active_company(), "company_id": lambda *a: get_active_company(),
} }
def confirm(self,ids,context={}):
obj=self.browse(ids)[0]
obj.write({
'state': 'confirmed',
})
def to_draft(self,ids,context={}):
obj=self.browse(ids)[0]
obj.write({
'state': 'draft',
})
Schedule.register() Schedule.register()

View File

@ -1,5 +1,6 @@
after finish hd case -> show popup to check nurse and doctor after finish after finish hd case -> show popup to check nurse and doctor after finish
many2many -> domain
formalar formalar
tick: tick:
find all -> replace -> multiple x find all -> replace -> multiple x