diff --git a/netforce_clinic/actions/clinic_report_hd_madical.xml b/netforce_clinic/actions/clinic_report_hd_medical.xml similarity index 73% rename from netforce_clinic/actions/clinic_report_hd_madical.xml rename to netforce_clinic/actions/clinic_report_hd_medical.xml index 4101bef..09b0345 100644 --- a/netforce_clinic/actions/clinic_report_hd_madical.xml +++ b/netforce_clinic/actions/clinic_report_hd_medical.xml @@ -1,8 +1,8 @@ Medical Report Summary report - clinic.report.hd.madical - report_hd_madical - report_hd_madical + clinic.report.hd.medical + report_hd_medical + report_hd_medical clinic_menu diff --git a/netforce_clinic/actions/clinic_report_hd_payment.xml b/netforce_clinic/actions/clinic_report_hd_payment.xml new file mode 100644 index 0000000..54ad850 --- /dev/null +++ b/netforce_clinic/actions/clinic_report_hd_payment.xml @@ -0,0 +1,8 @@ + + Payment Report Summary + report + clinic.report.hd.payment + report_hd_payment + report_hd_payment + clinic_menu + diff --git a/netforce_clinic/layouts/clinic_menu.xml b/netforce_clinic/layouts/clinic_menu.xml index 2246fdd..70a49bd 100644 --- a/netforce_clinic/layouts/clinic_menu.xml +++ b/netforce_clinic/layouts/clinic_menu.xml @@ -29,8 +29,10 @@
-
- +
+ +
+ "
diff --git a/netforce_clinic/layouts/clinic_report_hd_detail.xml b/netforce_clinic/layouts/clinic_report_hd_detail.xml index b07f88c..a16cb78 100644 --- a/netforce_clinic/layouts/clinic_report_hd_detail.xml +++ b/netforce_clinic/layouts/clinic_report_hd_detail.xml @@ -1,10 +1,12 @@
- - - - - - + + + + + + + +
diff --git a/netforce_clinic/layouts/clinic_report_hd_madical.xml b/netforce_clinic/layouts/clinic_report_hd_medical.xml similarity index 57% rename from netforce_clinic/layouts/clinic_report_hd_madical.xml rename to netforce_clinic/layouts/clinic_report_hd_medical.xml index fcd40ac..e8244f7 100644 --- a/netforce_clinic/layouts/clinic_report_hd_madical.xml +++ b/netforce_clinic/layouts/clinic_report_hd_medical.xml @@ -1,3 +1,3 @@ -
+ diff --git a/netforce_clinic/layouts/clinic_report_hd_payment.xml b/netforce_clinic/layouts/clinic_report_hd_payment.xml new file mode 100644 index 0000000..fb6e72e --- /dev/null +++ b/netforce_clinic/layouts/clinic_report_hd_payment.xml @@ -0,0 +1,12 @@ +
+ + + + + + + + + + +
diff --git a/netforce_clinic/models/__init__.py b/netforce_clinic/models/__init__.py index b628548..e90dbd6 100644 --- a/netforce_clinic/models/__init__.py +++ b/netforce_clinic/models/__init__.py @@ -33,7 +33,7 @@ from . import gen_visit from . import gen_visit_line from . import report_hd_detail from . import report_hd_summary -from . import report_hd_madical +from . import report_hd_medical from . import input_data from . import fin_setting from . import import_data_mg @@ -43,4 +43,5 @@ from . import translate from . import payment from . import account_payment from . import account_invoice +from . import report_hd_payment from . import personal_categ diff --git a/netforce_clinic/models/report_hd_detail.py b/netforce_clinic/models/report_hd_detail.py index d218e18..08054e2 100644 --- a/netforce_clinic/models/report_hd_detail.py +++ b/netforce_clinic/models/report_hd_detail.py @@ -1,7 +1,7 @@ import time from netforce.model import Model, fields, get_model -#from netforce.access import get_active_company + class ReportHDDetail(Model): _name="clinic.report.hd.detail" @@ -15,6 +15,8 @@ class ReportHDDetail(Model): "date_from": fields.Date("From"), "date_to": fields.Date("To"), "cycle_id": fields.Many2One("clinic.cycle","Cycle"), + "type": fields.Selection([("mg","Medical Goverment"),("sc","Social Security"),("nhso","NHSO (30B)"),("personal","Personal"),("other","Other")],"Type"), + } _defaults={ @@ -38,20 +40,14 @@ class ReportHDDetail(Model): date_from=time.strftime("%Y-%m-%d") date_to=time.strftime("%Y-%m-%d") - # print('date_from ',date_from) + defaults=context.get("defaults") if defaults: if defaults.get("date_from"): date_from=defaults['date_from'] if defaults.get("date_to"): date_to=defaults['date_to'] - # date_to=context['date_to'] - # default => key => dataults - # date_from=context['date_from'] - # print(context['date_from']) - #'2014-10-13' - # print('date_from ',date_from) - # print('date_to ',date_to) + PATIENT_TYPE={ "mg":"Medical Government", "sc":"Social Security", @@ -84,7 +80,11 @@ class ReportHDDetail(Model): dom.append([ 'doctor_id','=',obj.doctor_id.id, ]) - + if obj.type_id: + dom.append([ + 'type','=',obj.type_id.name, + ]) + dom.append(['time_start', ">=", date_from+" 00:00:00"]) dom.append(['time_stop',"<=", date_to+" 23:59:59"]) lines=[] @@ -92,10 +92,13 @@ class ReportHDDetail(Model): index=0 no_patient=0 for hd_case in get_model("clinic.hd.case").search_browse(dom,order="cycle_id.sequence"): + + for total in get_model("clinic.hd.case.line").search_browse([]): + total_fee=total.price or "" + + dialyzer_number=hd_case.dlz_id.id or "" 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: @@ -122,14 +125,18 @@ class ReportHDDetail(Model): vals={ 'show_cycle': show_cycle, 'cycle' : cycle_name, - 'patient': hd_case.patient_id.name, + 'patient_id': hd_case.patient_id.id, + 'patient_name': hd_case.patient_id.name, 'patient_type' : patient_type, 'no_patient': 0, - 'doctor' : hd_case.doctor_id.name, - 'total' : hd_case.total, + 'doctor_id': hd_case.doctor_id.id, + 'doctor_name' : hd_case.doctor_id.name, + 'total' : total_fee, + 'hd_case_id' : hd_case.id, 'rc_no' : hd_case.number, - 'dialyzer_name' : 'DZ-xxx', - 'nurse' : hd_case.nurse_id.name, + 'dialyzer_number' : dialyzer_number, + 'nurse_id': hd_case.nurse_id.id, + 'nurse_name' : hd_case.nurse_id.name, } lines.append(vals) diff --git a/netforce_clinic/models/report_hd_madical.py b/netforce_clinic/models/report_hd_madical.py deleted file mode 100644 index c2de473..0000000 --- a/netforce_clinic/models/report_hd_madical.py +++ /dev/null @@ -1,158 +0,0 @@ -import time - -from datetime import datetime -from calendar import monthrange -from netforce.model import Model,fields,get_model - -class ReportHDMadical(Model): - _name="clinic.report.hd.madical" - _string="Hemodialysis Report Madical Summary" - _transient=True - - _fields={ - "date": fields.Date("Month", required=True), - } - - _defaults={ - 'date': lambda *a: time.strftime("%Y-%m-%d"), - } - - def get_report_data(self,ids,context={}): - - for item in get_model("company").search_browse([]): - company_name=item.name - - date=datetime.now().strftime("%Y-%m-%d") - #datemonth=datetime.now().strftime("%m") - if ids: - obj=self.browse(ids)[0] - date=obj.date - year=int(date[0:4]) - month=int(date[5:7]) - month_str=datetime.strptime(date,'%Y-%m-%d').strftime("%B") - - next_month = str(month + 1) - if next_month == 13: - next_month = 12 - #next_month_str=datetime.strptime(next_month,'%m').strftime("%B") - previous_month = str(month - 1) - if previous_month == 0: - previous_month = 12 - #previous_month_str=datetime.strptime(previous_month,'%m').strftime("%B") - - #madical=get_model("clinic.hd.case.gm.line").search_browse() - #patients_mg=get_model("clinic.patient").search_browse(['type','=','mg']) - - weekday, total_day=monthrange(year, month) - time_start='2014-%s-01 00:00:00'%(month) - time_stop='2014-%s-%s 23:59:59'%(month,total_day) - - dom=[] - dom.append(['state','=','completed']) - dom.append(['time_start','>=',time_start]) - dom.append(['time_stop','<=',time_stop]) - #hd_cases=get_model("clinic.hd.case.gm.line").search_browse(dom) - - lines=[ - { - 'madical' : 'H4', - 'sc': '437', - 'uc': '', - 'buy' : '4', - 'total' : '441', - }, - { - 'madical' : 'H2', - 'sc': '', - 'uc': '', - 'buy' : '', - 'total' : '', - }, - { - 'madical' : 'Epr4', - 'sc': '216', - 'uc': '', - 'buy' : '', - 'total' : '216', - }, - { - 'madical' : 'Epr2', - 'sc': '', - 'uc': '', - 'buy' : '', - 'total' : '', - }, - { - 'madical' : 'Epk4', - 'sc': '70', - 'uc': '', - 'buy' : '', - 'total' : '70', - }, - { - 'madical' : 'Epk2', - 'sc': '', - 'uc': '', - 'buy' : '', - 'total' : '', - }, - { - 'madical' : 'Epg4', - 'sc': '98', - 'uc': '', - 'buy' : '', - 'total' : '98', - }, - { - 'madical' : 'Epg2', - 'sc': '', - 'uc': '', - 'buy' : '', - 'total' : '', - }, - { - 'madical' : 'Rng4', - 'sc': '34', - 'uc': '', - 'buy' : '9', - 'total' : '43', - }, - { - 'madical' : 'Rng2', - 'sc': '', - 'uc': '', - 'buy' : '', - 'total' : '', - }, - { - 'madical' : 'Epi4', - 'sc': '264', - 'uc': '', - 'buy' : '9', - 'total' : '43', - }, - { - 'madical' : 'Epi2', - 'sc': '', - 'uc': '', - 'buy' : '', - 'total' : '', - }, - { - 'madical' : 'Vnf', - 'sc': '', - 'uc': '', - 'buy' : '', - 'total' : '', - }, - ] - - data={ - 'month': month_str, - 'year': year, - 'lines': lines, - 'company_name': company_name, - } - return data - -ReportHDMadical.register() diff --git a/netforce_clinic/models/report_hd_medical.py b/netforce_clinic/models/report_hd_medical.py new file mode 100644 index 0000000..777e820 --- /dev/null +++ b/netforce_clinic/models/report_hd_medical.py @@ -0,0 +1,77 @@ +import time + +from datetime import datetime +from calendar import monthrange +from netforce.model import Model,fields,get_model + +class ReportHDMedical(Model): + _name="clinic.report.hd.medical" + _string="Hemodialysis Report Medical Summary" + _transient=True + + _fields={ + "date": fields.Date("Month", required=True), + } + + _defaults={ + 'date': lambda *a: time.strftime("%Y-%m-%d"), + } + + def get_report_data(self,ids,context={}): + + for item in get_model("company").search_browse([]): + company_name=item.name + + date=datetime.now().strftime("%Y-%m-%d") + #datemonth=datetime.now().strftime("%m") + if ids: + obj=self.browse(ids)[0] + date=obj.date + year=int(date[0:4]) + month=int(date[5:7]) + month_str=datetime.strptime(date,'%Y-%m-%d').strftime("%B") + + #dom=[] + #dom.append(['fee_type','=','mg']) + + weekday, total_day=monthrange(year, month) + time_start='2014-%s-01 00:00:00'%(month) + time_stop='2014-%s-%s 23:59:59'%(month,total_day) + + dom=[] + dom.append(['state','=','completed']) + dom.append(['time_start','>=',time_start]) + dom.append(['time_stop','<=',time_stop]) + + lines=[] + index=0 + for product in get_model("product").search_browse(['type','=','stock']): + product_id=product.id or "" + product_code=product.code or "" + product_name=product.name or "" + product_amount=len(str(product_code)) + #total=len(str(product_amount)) + + index+=1 + vals={ + 'product_code' : product_code, + 'medical' : product_name, + 'mg' : '-', + 'uc' : '-', + 'sc' : '-', + 'buy' : '-', + 'amount' : product_amount, + 'product_id': product_id, + } + lines.append(vals) + + + data={ + 'month': month_str, + 'year': year, + 'lines': lines, + 'company_name': company_name, + } + return data + +ReportHDMedical.register() diff --git a/netforce_clinic/models/report_hd_payment.py b/netforce_clinic/models/report_hd_payment.py new file mode 100644 index 0000000..f8969f2 --- /dev/null +++ b/netforce_clinic/models/report_hd_payment.py @@ -0,0 +1,174 @@ +import time + +from netforce.model import Model, fields, get_model + + +class ReportHDPayment(Model): + _name="clinic.report.hd.payment" + _string="Hemodialysis Report Payment" + _transient=True + + _fields={ + "patient_id" : fields.Many2One("clinic.patient","Patient"), + "doctor_id" : fields.Many2One("clinic.doctor","Doctor"), + "nurse_id" : fields.Many2One("clinic.nurse","Nurse"), + "date_from": fields.Date("From"), + "date_to": fields.Date("To"), + "cycle_id": fields.Many2One("clinic.cycle","Cycle"), + "type": fields.Selection([("mg","Medical Goverment"),("sc","Social Security"),("nhso","NHSO (30B)"),("personal","Personal"),("other","Other")],"Type"), + + } + + _defaults={ + 'date_from': lambda *a: time.strftime("%Y-%m-%d"), + 'date_to': lambda *a: time.strftime("%Y-%m-%d"), + } + + _order="cycle_id desc" + + + def get_report_data(self,ids,context={}): + + # company_id=get_active_company + # comp=get_model("company").browse(company_id) + # context=> dict + # inside context => keys => defaults => type => dict + # dict => key: value => '', 1, [], {} + # context['default'] => defaults(dict) => key => inside key => value => '2014-10-22' + for item in get_model("company").search_browse([]): + company_name=item.name + + date_from=time.strftime("%Y-%m-%d") + date_to=time.strftime("%Y-%m-%d") + + defaults=context.get("defaults") + if defaults: + if defaults.get("date_from"): + date_from=defaults['date_from'] + if defaults.get("date_to"): + date_to=defaults['date_to'] + + PATIENT_TYPE={ + "mg":"Medical Government", + "sc":"Social Security", + "nhso":"NHSO (30฿)", + "personal": "Personal", + "others": "Others", + } + + dom=[] + dom.append(['state','=','completed']) + if ids: + obj=self.browse(ids)[0] + if obj.date_from: + date_from=obj.date_from + if obj.date_to: + date_to=obj.date_to + if obj.cycle_id: + dom.append([ + 'cycle_id','=',obj.cycle_id.id, + ]) + if obj.patient_id: + dom.append([ + 'patient_id','=',obj.patient_id.id, + ]) + if obj.nurse_id: + dom.append([ + 'nurse_id','=',obj.nurse_id.id, + ]) + if obj.doctor_id: + dom.append([ + 'doctor_id','=',obj.doctor_id.id, + ]) + if obj.type_id: + dom.append([ + 'type','=',obj.type_id.id, + ]) + + dom.append(['time_start', ">=", date_from+" 00:00:00"]) + dom.append(['time_stop',"<=", date_to+" 23:59:59"]) + lines=[] + cycles=[] + index=0 + no_patient=0 + for hd_case in get_model("clinic.hd.case").search_browse(dom,order="cycle_id.sequence"): + #print('='*50) + #for line in hd_case.line: + # dialyzer_id=line.dialyzer_id + # if dialyzer_id: + # dialyzer_number=line.number or "" + # print(dialyzer_number) + + #print('='*50) + patient_type=hd_case.patient_id.type + patient_type=PATIENT_TYPE.get(patient_type) + #dialyzer=get_model("clinic.dialyzer").search_browse([]) + cycle_name=hd_case.cycle_id.name or "" + show_cycle=False + if not cycle_name in cycles: + cycles.append(cycle_name) + show_cycle=True + 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_id': hd_case.patient_id.id, + 'patient_name': hd_case.patient_id.name, + 'patient_type' : patient_type, + 'no_patient': 0, + 'doctor_id': hd_case.doctor_id.id, + 'doctor_name' : hd_case.doctor_id.name, + 'total' : hd_case.total, + 'hd_case_id' : hd_case.id, + 'rc_no' : hd_case.number, + 'dialyzer_number' : 'DZ-XXXX', + 'nurse_id': hd_case.nurse_id.id, + 'nurse_name' : 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) + #XXX + del lines[0] + data={ + 'lines': lines, + 'same_date': date_from==date_to, + 'date_from': date_from, + 'date_to': date_to, + 'company_name': company_name, + } + return data + +ReportHDPayment.register() diff --git a/netforce_clinic/models/report_hd_summary.py b/netforce_clinic/models/report_hd_summary.py index bcbf3d0..64b357e 100644 --- a/netforce_clinic/models/report_hd_summary.py +++ b/netforce_clinic/models/report_hd_summary.py @@ -19,9 +19,6 @@ class ReportHDSummary(Model): } def get_report_data(self,ids,context={}): - # company_id=get_active_company - # company_name=get_model("company").search("name") - # company_name=get_model("company").search_browse() for item in get_model("company").search_browse([]): company_name=item.name @@ -51,11 +48,6 @@ class ReportHDSummary(Model): time_start='2014-%s-01'%(month) # 2014-10-20 time_stop='2014-%s-%s'%(month,total_day) - dom=[] - dom.append(['time_start','>=',time_start]) - dom.append(['time_stop','<=',time_stop]) - - dom=[] dom.append(['type','=','mg']) patients_mg=len(get_model("clinic.patient").search(dom)) @@ -67,14 +59,15 @@ class ReportHDSummary(Model): patients_nhso=len(get_model("clinic.patient").search(dom)) dom.append(['type','=','pn']) patients_pn=len(get_model("clinic.patient").search(dom)) - + #New Patients + #dom.append(['type','=','All']) patients=len(get_model("clinic.patient").search_browse(['type','=','All'])) - #new_patients=len(patients) - + dom=[] dom.append(['state','=','completed']) dom.append(['time_start','>=',time_start]) dom.append(['time_stop','<=',time_stop]) + cur_total_case=len(get_model("clinic.hd.case").search(dom)) weekday, prev_total_day=monthrange(year, previous_month) diff --git a/netforce_clinic/reports/report_hd_detail.xlsx b/netforce_clinic/reports/report_hd_detail.xlsx index f8cb902..1e67ae7 100644 Binary files a/netforce_clinic/reports/report_hd_detail.xlsx and b/netforce_clinic/reports/report_hd_detail.xlsx differ diff --git a/netforce_clinic/reports/report_hd_medical.xlsx b/netforce_clinic/reports/report_hd_medical.xlsx new file mode 100644 index 0000000..7e3b942 Binary files /dev/null and b/netforce_clinic/reports/report_hd_medical.xlsx differ diff --git a/netforce_clinic/reports/report_hd_madical.xlsx b/netforce_clinic/reports/report_hd_payment.xlsx similarity index 100% rename from netforce_clinic/reports/report_hd_madical.xlsx rename to netforce_clinic/reports/report_hd_payment.xlsx diff --git a/netforce_clinic/templates/report_hd_detail.hbs b/netforce_clinic/templates/report_hd_detail.hbs index 19b18ad..5985b4b 100644 --- a/netforce_clinic/templates/report_hd_detail.hbs +++ b/netforce_clinic/templates/report_hd_detail.hbs @@ -9,7 +9,7 @@ {{/if}} - +
- @@ -33,6 +30,9 @@ + @@ -53,26 +53,18 @@ {{else}} - + {{/if}} - - - - + + + + {{/each}} diff --git a/netforce_clinic/templates/report_hd_madical.hbs b/netforce_clinic/templates/report_hd_madical_old.hbs similarity index 100% rename from netforce_clinic/templates/report_hd_madical.hbs rename to netforce_clinic/templates/report_hd_madical_old.hbs diff --git a/netforce_clinic/templates/report_hd_medical.hbs b/netforce_clinic/templates/report_hd_medical.hbs new file mode 100644 index 0000000..7a9890f --- /dev/null +++ b/netforce_clinic/templates/report_hd_medical.hbs @@ -0,0 +1,48 @@ +
+

+ Summary of the Medical +

+

+ [{{company_name}}]
+

+

+ As at {{month}} {{year}} +

+
+
@@ -18,9 +18,6 @@ Patient - Doctor - Patient Type Dialyzer + Doctor + Nurse {{no_patient}}{{patient}}{{patient_name}} - {{doctor}} - {{patient_type}} {{total}} - {{rc_no}} - - {{dialyzer_name}} - - {{nurse}} - {{rc_no}}{{dialyzer_number}}{{doctor_name}}{{nurse_name}}
+ + + + + + + + + + + + + {{#each lines}} + + + + + + + + + + {{/each}} + + + + + + + + + + + + +
Product IDProduct NameMGUCNHSO (30B)PayTotal
{{product_code}}{{medical}}{{mg}}{{uc}}{{sc}}{{buy}}{{amount}}
----32
diff --git a/netforce_clinic/templates/report_hd_payment.hbs b/netforce_clinic/templates/report_hd_payment.hbs new file mode 100644 index 0000000..aaabe16 --- /dev/null +++ b/netforce_clinic/templates/report_hd_payment.hbs @@ -0,0 +1,61 @@ +
+

Detail of the Hemodialysis

+

Payment

+

[{{company_name}}]

+

+ {{#if same_date}} + As at {{fmt_date date_from}} + {{else}} + From {{fmt_date date_from}} to {{fmt_date date_to}} + {{/if}} +

+
+ + + + + + + + + + + + {{#each lines context=context}} + {{#if show_cycle}} + + + + {{/if}} + + + + + + {{#if total}} + + + {{else}} + + {{/if}} + + {{/each}} + + + + + + +
+ Cycle + + RC.No + + Doctor + + Nurce + + HD Fee +
+ {{cycle}} +
{{rc_no}}{{doctor_name}}{{nurse_name}}Total{{total}}{{total}}
diff --git a/netforce_clinic/templates/report_hd_summary.hbs b/netforce_clinic/templates/report_hd_summary.hbs index af2deb1..ca07430 100644 --- a/netforce_clinic/templates/report_hd_summary.hbs +++ b/netforce_clinic/templates/report_hd_summary.hbs @@ -4,10 +4,12 @@

[{{company_name}}]
- As at {{month}} {{year}}

+

+ As at {{month}} {{year}} +

- +
@@ -22,4 +24,11 @@ {{/each}} + + + + + + +
Topic Month