diff --git a/netforce_clinic/models/patient.py b/netforce_clinic/models/patient.py index 1c2ae2f..dbcea57 100644 --- a/netforce_clinic/models/patient.py +++ b/netforce_clinic/models/patient.py @@ -252,7 +252,7 @@ class Patient(Model): 'dispose': False, } - _sql_constraints=("clinic_patient_key_uniq","unique(name_check,branch_id)","name should be unique"), + _sql_constraints=("clinic_patient_key_uniq","unique(name_check)","name should be unique"), _order="reg_date desc" def check_idcard(self,card_type,idcard=''): diff --git a/netforce_clinic/models/setting.py b/netforce_clinic/models/setting.py index 671c683..69ba98b 100644 --- a/netforce_clinic/models/setting.py +++ b/netforce_clinic/models/setting.py @@ -183,6 +183,7 @@ class ClinicSetting(Model): }) sts={} print('='*50, 'patients duplicate') + db=get_connection() for pt, vals in pts.items(): vals=sorted(vals,key=lambda x: x['date']) count=len(vals) @@ -190,14 +191,74 @@ class ClinicSetting(Model): if count > 1: id_lines=[] for val in vals: - print(val['id'], val['name']) no+=1 pt_id=val['id'] + print(no, val['id'], val['name'], val['date']) if no==len(vals): - # hdcase - # visit - # dialyzer - print('---> ', pt_id, id_lines) + for del_pt_id in id_lines: + visit_ids=[] + hdcase_ids=[] + print('del_pt_id ', del_pt_id) + for hdcase in get_model('clinic.hd.case').search_browse([['patient_id','=',del_pt_id]]): + visit_ids.append(hdcase.visit_id.id) + hdcase_ids.append(hdcase.id) + print('hdcase_ids ', hdcase_ids, 'visit_ids ', visit_ids) + if hdcase_ids: + print('>>>>>>>> pt_id ', pt_id) + db.execute('update clinic_hd_case set patient_id=%s where id in %s', pt_id,tuple(hdcase_ids)) + db.execute('update clinic_visit set patient_id=%s where id in %s', pt_id,tuple(visit_ids)) + db.execute('update clinic_dialyzer set patient_id=%s where patient_id = %s', pt_id,del_pt_id) + #for hdcase in get_model("clinic.hd.case").browse(hdcase_ids): + #hdcase.write({ + #'patient_id': pt_id, + #}) + #for vs in get_model("clinic.visit").browse(visit_ids): + #vs.write({ + #'patient_id': pt_id, + #}) + #for dlz in get_model("clinic.dialyzer").search_browse([['patient_id','=',del_pt_id]]): + #dlz.write({ + #'patient_id': pt_id, + #}) + for ap in get_model("clinic.setting.account.patient").search_browse([['patient_id','=',del_pt_id]]): + ap.write({ + 'patient_id': pt_id, + }) + for hdce in get_model("clinic.hd.case.expense").search_browse([['patient_id','=',del_pt_id]]): + hdce.write({ + 'patient_id': pt_id, + }) + #get_model('clinic.patient').delete([del_pt_id]) + for pt in get_model('clinic.patient').browse([del_pt_id]): + pt.write({ + 'first_name': '__%s'% pt.first_name or "", + 'active': False, + }) + else: + print('patient zero delete ', val) + for vs in get_model("clinic.visit").search_browse([['patient_id','=',del_pt_id]]): + vs.write({ + 'patient_id': pt_id, + }) + for dlz in get_model("clinic.dialyzer").search_browse([['patient_id','=',del_pt_id]]): + dlz.write({ + 'patient_id': pt_id, + }) + for ap in get_model("clinic.setting.account.patient").search_browse([['patient_id','=',del_pt_id]]): + ap.write({ + 'patient_id': pt_id, + }) + for hdce in get_model("clinic.hd.case.expense").search_browse([['patient_id','=',del_pt_id]]): + hdce.write({ + 'patient_id': pt_id, + }) + #get_model('clinic.patient').delete([del_pt_id]) + for pt in get_model('clinic.patient').browse([del_pt_id]): + pt.write({ + 'first_name': '__%s'% pt.first_name or "", + 'active': False, + }) + print('---> ', pt_id, id_lines, val['date']) else: id_lines.append(pt_id) diff --git a/netforce_clinic/models/staff.py b/netforce_clinic/models/staff.py index 6c86876..f297e71 100644 --- a/netforce_clinic/models/staff.py +++ b/netforce_clinic/models/staff.py @@ -250,8 +250,7 @@ class Staff(Model): 'location': _get_default_location, } - #_key=["name_check","branch_id"] #not working - _sql_constraints=("clinic_staff_key_uniq","unique(name_check,branch_id)","name should be unique"), + _sql_constraints=("clinic_staff_key_uniq","unique(name_check)","name should be unique"), _order="date desc,number desc" def create_contact(self,code,name):