diff --git a/netforce_clinic/models/hd_case.py b/netforce_clinic/models/hd_case.py index c2940d0..a9631e6 100644 --- a/netforce_clinic/models/hd_case.py +++ b/netforce_clinic/models/hd_case.py @@ -46,7 +46,7 @@ class HDcase(Model): "state": fields.Selection([("draft","Draft"),("confirmed","Confirmed"),("approved","Approved"),("cancelled","Cancelled"),("paid","Paid")],"Status",required=True), "hct": fields.Integer("HCT %"), "state": fields.Selection([("draft","Draft"),("in_progress","In Progress"),("completed","Completed"),("discountinued","Discountinued"),("uncompleted","Uncompleted")],"Status",required=True), - "dialyzers": fields.One2Many("clinic.dialyzer.line","hd_case_id","Dializers"), + "dialyzers": fields.One2Many("clinic.dialyzer.line","hd_case_id","Dialyzers"), "lines": fields.One2Many("clinic.hd.case.line","hd_case_id","Lines"), "gm_lines": fields.One2Many("clinic.hd.case.gm.line","hd_case_id","GM Lines"), "comments": fields.One2Many("message","related_id","Comments"), @@ -165,12 +165,11 @@ class HDcase(Model): return data def onchange_hct(self,context={}): - data=context['data'] + data=context['hct'] hct=data['hct'] - if (hct>39): - print ("Test1") - else: - print ("Test3") + if(hct<=39): + raise Exception("Unit not found in uom") + def cancelled(self,ids,context={}): obj=self.browse(ids)[0] diff --git a/netforce_clinic/models/report_dialyzer_drop.py b/netforce_clinic/models/report_dialyzer_drop.py index 1b6e36b..0e229e4 100644 --- a/netforce_clinic/models/report_dialyzer_drop.py +++ b/netforce_clinic/models/report_dialyzer_drop.py @@ -13,14 +13,12 @@ class DialyzerDrop(Model): _defaults={ 'date': lambda *a: time.strftime("%Y-%m-%d"), - "state" : "drop", } def get_report_data(self,ids,context={}): lines=[] - dialyzer_ids=get_model("clinic.dialyzer").search([["state","=","drop"]]) - hd_cases=get_model("clinic.dialyzer").search_browse([]) + hd_cases=get_model("clinic.dialyzer").search_browse(['state','=','drop']) for dialyzer_ids in hd_cases: lines.append({ 'number' : dialyzer_ids.number, diff --git a/netforce_clinic/models/report_hd.py b/netforce_clinic/models/report_hd.py index 49555c0..6607a4d 100644 --- a/netforce_clinic/models/report_hd.py +++ b/netforce_clinic/models/report_hd.py @@ -8,16 +8,21 @@ class HDReport(Model): _transient=True _fields={ - "date": fields.Date("Date"), + "date": fields.Date("Start-Date"), + #"time_start": fields.DateTime("Time start",required=False,search=True), + #"time_stop": fields.DateTime("Time stop",required=False,search=True), "cycle_id": fields.Many2One("clinic.cycle","Cycle"), } _defaults={ 'date': lambda *a: time.strftime("%Y-%m-%d"), + #'time_start': lambda *a: time.strftime("%Y-%m-%d"), + #'time_stop': lambda *a: time.strftime("%Y-%m-%d"), } _order="cycle_id desc" + def get_report_data(self,ids,context={}): PATIENT_TYPE={ "mg":"Medical Government", @@ -26,6 +31,8 @@ class HDReport(Model): "personal": "Personal", "others": "Others", } + #time_start=time.strftime("%Y-%m-%d") + #time_stop=time.strftime("%Y-%m-%d") date=time.strftime("%Y-%m-%d") dom=[] dom.append(['state','=','completed']) @@ -47,25 +54,28 @@ class HDReport(Model): for hd_case in get_model("clinic.hd.case").search_browse(dom,order="cycle_id.sequence"): patient_type=hd_case.patient_id.type patient_type=PATIENT_TYPE.get(patient_type) + #dialyzer_name=hd_case.dialyzers.id + #dialyzer_name=DIALYZER_NAME.get(dialyzer_name) cycle_name=hd_case.cycle_id.name or "" show_cycle=False if not cycle_name in cycles: cycles.append(cycle_name) show_cycle=True - if index > 1: - vals={ - 'color': 'success', - 'show_cycle': False, - 'cycle' : "", - 'patient': "", - 'no_patient': no_patient, - 'patient_type' : "", - 'doctor' : "", - 'total' : "", - 'rc_no' : "", - 'nurse' : "", - } - lines.append(vals) + print("OK") + vals={ + 'color': 'success', + 'show_cycle': False, + 'cycle' : "", + 'patient': "", + 'no_patient': no_patient, + 'patient_type' : "", + 'doctor' : "", + 'total' : "", + 'rc_no' : "", + 'dialyzer_name' : "", + 'nurse' : "", + } + lines.append(vals) no_patient=1 else: no_patient+=1 @@ -79,6 +89,7 @@ class HDReport(Model): 'doctor' : hd_case.doctor_id.name, 'total' : hd_case.fee, 'rc_no' : hd_case.number, + 'dialyzer_name' : 'DZ-xxx', 'nurse' : hd_case.nurse_id.name, } lines.append(vals) @@ -95,10 +106,12 @@ class HDReport(Model): 'doctor' : "", 'total' : "", 'rc_no' : "", + 'dialyzer_name' : "", 'nurse' : "", } lines.append(vals) - + #XXX + del lines[0] data={ 'lines': lines, } diff --git a/netforce_clinic/models/report_hd.py~ b/netforce_clinic/models/report_hd.py~ new file mode 100644 index 0000000..ba9bea8 --- /dev/null +++ b/netforce_clinic/models/report_hd.py~ @@ -0,0 +1,119 @@ +import time + +from netforce.model import Model, fields, get_model + +class HDReport(Model): + _name="clinic.hd.report" + _string="HD Report" + _transient=True + + _fields={ + "date": fields.Date("Start-Date"), + #"time_start": fields.DateTime("Time start",required=False,search=True), + #"time_stop": fields.DateTime("Time stop",required=False,search=True), + "cycle_id": fields.Many2One("clinic.cycle","Cycle"), + } + + _defaults={ + 'date': lambda *a: time.strftime("%Y-%m-%d"), + #'time_start': lambda *a: time.strftime("%Y-%m-%d"), + #'time_stop': lambda *a: time.strftime("%Y-%m-%d"), + } + + _order="cycle_id desc" + + + def get_report_data(self,ids,context={}): + PATIENT_TYPE={ + "mg":"Medical Government", + "sc":"Social Security", + "nhso":"NHSO (30฿)", + "personal": "Personal", + "others": "Others", + } + #time_start=time.strftime("%Y-%m-%d") + #time_stop=time.strftime("%Y-%m-%d") + date=time.strftime("%Y-%m-%d") + dom=[] + dom.append(['state','=','completed']) + if ids: + obj=self.browse(ids)[0] + if obj.date: + date=obj.date + if obj.cycle_id: + dom.append([ + 'cycle_id','=',obj.cycle_id.id, + ]) + dom.append(['time_start', ">=", obj.date+"00:00:00"]) + dom.append(['time_stop', "<=", obj.date+"23:59:59"]) + print("dom ", dom) + lines=[] + cycles=[] + index=0 + no_patient=0 + for hd_case in get_model("clinic.hd.case").search_browse(dom,order="cycle_id.sequence"): + patient_type=hd_case.patient_id.type + patient_type=PATIENT_TYPE.get(patient_type) + dialyzer_name=hd_case.dialyzers.id + dialyzer_name=DIALYZER_NAME.get(dialyzer_name) + cycle_name=hd_case.cycle_id.name or "" + show_cycle=False + if not cycle_name in cycles: + cycles.append(cycle_name) + show_cycle=True + if index > 1: + vals={ + 'color': 'success', + 'show_cycle': False, + 'cycle' : "", + 'patient': "", + 'no_patient': no_patient, + 'patient_type' : "", + 'doctor' : "", + 'total' : "", + 'rc_no' : "", + 'dialyzer_name' : "", + 'nurse' : "", + } + lines.append(vals) + no_patient=1 + else: + no_patient+=1 + index+=1 + vals={ + 'show_cycle': show_cycle, + 'cycle' : cycle_name, + 'patient': hd_case.patient_id.name, + 'patient_type' : patient_type, + 'no_patient': 0, + 'doctor' : hd_case.doctor_id.name, + 'total' : hd_case.fee, + 'rc_no' : hd_case.number, + 'dialyzer' : dialyzer_name, + 'nurse' : hd_case.nurse_id.name, + } + lines.append(vals) + + # XXX + if lines: + vals={ + 'color': 'success', + 'show_cycle': False, + 'cycle' : "", + 'patient': "", + 'no_patient': no_patient, + 'patient_type' : "", + 'doctor' : "", + 'total' : "", + 'rc_no' : "", + 'dialyzer_name' : "", + 'nurse' : "", + } + lines.append(vals) + + data={ + 'lines': lines, + } + return data + +HDReport.register() diff --git a/netforce_clinic/reports/hd_report.xlsx b/netforce_clinic/reports/hd_report.xlsx index 26528a1..117d38d 100644 Binary files a/netforce_clinic/reports/hd_report.xlsx and b/netforce_clinic/reports/hd_report.xlsx differ diff --git a/netforce_clinic/templates/report_hd_report.hbs b/netforce_clinic/templates/report_hd_report.hbs index 19a27b9..9c63701 100644 --- a/netforce_clinic/templates/report_hd_report.hbs +++ b/netforce_clinic/templates/report_hd_report.hbs @@ -1,7 +1,9 @@
-

- HD Case Report -

+

HD Case Report

+

+ Clinic [Ratchawat]
+ As at {{fmt_date date}} +

@@ -24,6 +26,9 @@ + @@ -58,6 +63,9 @@ +
RC.No + Dialyzer + Nurse {{rc_no}} + {{dialyzer_name}} + {{nurse}}