diff --git a/netforce_clinic/actions/clinic_staff.xml b/netforce_clinic/actions/clinic_staff.xml
index b0f69a8..5b94985 100644
--- a/netforce_clinic/actions/clinic_staff.xml
+++ b/netforce_clinic/actions/clinic_staff.xml
@@ -2,7 +2,7 @@
Staffs
multi_view
clinic.staff
- [["All",[]],["Archived",[["active","=",false]]],["Doctor",[["type","=","doctor"]]],["Nurse",[["type","=","nurse"]]]]
+ [["All",[]],["Archived",[["active","=",false]]],["Staff",[["type","=","staff"]]],["Doctor",[["type","=","doctor"]]],["Nurse",[["type","=","nurse"]]]]
list,page,form
clinic_menu
25
diff --git a/netforce_clinic/layouts/clinic_staff_form.xml b/netforce_clinic/layouts/clinic_staff_form.xml
index 16275c5..4f7bc72 100644
--- a/netforce_clinic/layouts/clinic_staff_form.xml
+++ b/netforce_clinic/layouts/clinic_staff_form.xml
@@ -50,23 +50,8 @@
-
-
-
+
@@ -79,8 +64,22 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/netforce_clinic/models/hd_case.py b/netforce_clinic/models/hd_case.py
index 290db12..2acf9be 100644
--- a/netforce_clinic/models/hd_case.py
+++ b/netforce_clinic/models/hd_case.py
@@ -914,10 +914,10 @@ class HDCase(Model):
return vals
# staff
patient=get_model("clinic.patient").browse(patient_id)
- doctor=patient.doctor_id
- if doctor:
+ if not vals.get('staffs'):
vals['staffs']=[]
- if not vals.get('staffs'):
+ doctor=patient.doctor_id
+ if doctor:
vals['staffs'].append(('create',{
'staff_id': doctor.id,
'type': 'doctor',
diff --git a/netforce_clinic/models/hd_case_staff.py b/netforce_clinic/models/hd_case_staff.py
index f6e7a1b..d345989 100644
--- a/netforce_clinic/models/hd_case_staff.py
+++ b/netforce_clinic/models/hd_case_staff.py
@@ -3,12 +3,36 @@ from netforce.model import Model, fields
class HDCaseStaff(Model):
_name="clinic.hd.case.staff"
_name_field="staff_id"
+
+ def _get_all(self,ids,context={}):
+ res={}
+ for obj in self.browse(ids):
+ hd_case=obj.hd_case_id
+ patient=hd_case.patient_id
+ res[obj.id]={
+ 'sickbed_id': hd_case.sickbed_id.id,
+ 'patient_id': patient.id,
+ 'patient_type_id': patient.type_id.id,
+ 'cycle_id': hd_case.cycle_id.id,
+ 'date': hd_case.date,
+ 'department_id': hd_case.department_id.id,
+ 'state': hd_case.state,
+ }
+ return res
+
_fields={
"hd_case_id": fields.Many2One("clinic.hd.case","HD Case",required=True,on_delete="cascade"),
"staff_id": fields.Many2One("clinic.staff","Doctor",search=True),
"type": fields.Selection([("doctor","Doctor"),('nurse','Nurse'),("staff","Staff")],"Type",required=True),
"priop": fields.Selection([("owner","Owner"),('second','Secondary'),('other','Other')],"Priority"),
'note': fields.Char("Note"),
+ 'sickbed_id': fields.Many2One("clinic.sickbed","Sickbed",function="_get_all",function_multi=True),
+ 'patient_id': fields.Many2One("clinic.patient","Patient",function="_get_all",function_multi=True),
+ 'patient_type_id': fields.Many2One("clinic.patient.type","Patient Type",function="_get_all",function_multi=True),
+ 'cycle_id': fields.Many2One("clinic.cycle","Cycle",function="_get_all",function_multi=True),
+ 'department_id': fields.Many2One("clinic.department","Department",function="_get_all",function_multi=True),
+ 'date': fields.Date("Date",function="_get_all",function_multi=True),
+ "state": fields.Selection([("draft","Draft"),('waiting_treatment','Waiting Treatment'),("in_progress","In Progress"),("completed","Finish Treatment"),('paid','Paid'),("waiting_payment","Waiting Payment"),("discountinued","Discountinued"),("cancelled","Cancelled")],"Status",function="_get_all",function_multi=True),
}
_defaults={
diff --git a/netforce_clinic/models/staff.py b/netforce_clinic/models/staff.py
index 967592d..9817c2d 100644
--- a/netforce_clinic/models/staff.py
+++ b/netforce_clinic/models/staff.py
@@ -55,9 +55,18 @@ class Staff(Model):
return res
def _get_hdcase(self,ids,context={}):
+ # problem slow to load
res={}
for obj in self.browse(ids):
- res[obj.id]=[1]
+ hids=[]
+ if obj.type=='doctor':
+ hids=get_model("clinic.hd.case.staff").search([['staff_id','=',obj.id]])
+ elif obj.type=='nurse':
+ item_ids=[item['cycle_item_id'][0] for item in get_model("clinic.cycle.item.nurse").search_read([['nurse_id','=',obj.id]],['cycle_item_id'])]
+ for item in get_model("clinic.cycle.item").browse(item_ids):
+ for hdcase in item.hd_cases:
+ hids.append(hdcase.id)
+ res[obj.id]=hids
return res
_fields={
@@ -106,7 +115,7 @@ class Staff(Model):
'cycle_id': fields.Many2One('clinic.cycle','Last Cycle',function="_get_cycle"),
'branch_id': fields.Many2One("clinic.branch","Branch"),
"hd_case_staffs": fields.One2Many("clinic.hd.case.staff","staff_id","HD Cases"),
- "hd_cases": fields.Many2Many("clinic.hd.case","HD Cases",function="_get_hdcase"),
+ "hd_cases": fields.Many2Many("clinic.hd.case","HD Cases",function="_get_hdcase"), # not need to use (it's slow to load)
"cycle_item_nurses": fields.One2Many("clinic.cycle.item.nurse","nurse_id","Cycle Items"),
}
diff --git a/netforce_clinic/models/visit.py b/netforce_clinic/models/visit.py
index dd1e0ad..3b2c33c 100644
--- a/netforce_clinic/models/visit.py
+++ b/netforce_clinic/models/visit.py
@@ -175,6 +175,12 @@ class Visit(Model):
dialyzer=self.get_dlz(obj.id)
vals['dialyzers'].append(('create',dialyzer))
+ vals['staffs'].append(('create',{
+ 'staff_id': obj.doctor_id.id,
+ 'type': 'doctor',
+ 'priop': 'owner',
+ }))
+
# use exist hd_case (in case set to draft)
hd_case_id=None
if obj.hd_cases:
diff --git a/netforce_clinic/todo.txt b/netforce_clinic/todo.txt
index 83cbf7b..848b08f 100644
--- a/netforce_clinic/todo.txt
+++ b/netforce_clinic/todo.txt
@@ -1,17 +1 @@
-=====
- - visit
- - color
- - generate
- nurses too much copy
- - access right
- - diffrent user branch
-=====
-create button reset at setting
- - backup master data
- - patient
- - staff/nurse/doctor
- - account
- - journal
- - product
- ---
-
+onclick hd case on staff