From c173665cd84f9ab7ec7aaccb0d1287b05fa53b79 Mon Sep 17 00:00:00 2001 From: "chayut.s" Date: Tue, 14 Oct 2014 18:42:21 +0700 Subject: [PATCH] HD case Report --- netforce_clinic/models/hd_case.py | 11 +- .../models/report_dialyzer_drop.py | 4 +- netforce_clinic/models/report_hd.py | 44 ++++--- netforce_clinic/models/report_hd.py~ | 119 ++++++++++++++++++ netforce_clinic/reports/hd_report.xlsx | Bin 5289 -> 15867 bytes .../templates/report_hd_report.hbs | 14 ++- 6 files changed, 164 insertions(+), 28 deletions(-) create mode 100644 netforce_clinic/models/report_hd.py~ diff --git a/netforce_clinic/models/hd_case.py b/netforce_clinic/models/hd_case.py index 04a74f4..10ed27e 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 38c5af2..6607a4d 100644 --- a/netforce_clinic/models/report_hd.py +++ b/netforce_clinic/models/report_hd.py @@ -8,12 +8,16 @@ 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" @@ -27,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']) @@ -48,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 @@ -80,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) @@ -96,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 26528a1fa2524dddcb408bf6606205a8bcc93b65..117d38d9d208aacd4d4aa7b5b3d039b0c789ad32 100644 GIT binary patch literal 15867 zcmeI3c|26@|Nq--S}14i$=!@bLs?FX3Tc@c(M0xS3&%EOE!$Yy8EdB$r$j}=5bl&M z%T$z6p)w_eLPU*y2{Zht?mM)6`u_WS+?U6LDisfy&0eUN7PhOpe3!VO>eBWHeBw&=_2wYNw2X#&zd4hg(e57heKGO6*Zj6K zB40Z**%J?Y8=E5@@?X9vPB!P^8)J_*wwLJd`i2D;OY}bvTTd~{;zTSQ<&%0fui}8= zW7{aH6phE79Ttrmx&mt&v`eB=sgJh*U81yFs@tq=J>WIg?K0le$vN4`Cme0p))naI z-CLg!#Lw3ixINH+a4cFtG(0sd}tIyGqv4QrwzM&vV$uXYmaCc+Ch=m$AAfPAb zi3NX9>cUcq0w%ZTU51g7|x-g3s?qpYRI@ zRaGmEf2gnPl2r5U=Z<y=abiR`p9%pT@Xe`(|I=uYKIJc+%9q%PaOODS)J0l_} zaQI_Q(32oFo~s9c{lk+=b}kuw!UMw}n=P4J{i!}%8V29>M;E*1UfTZVO~9r&uhRQ% zmzm@3L0xLR=J)__f6s!Tj|M)jZr&cI2s5^zpy6%n;P9vJ(f3Ayf!%$>b$y}Sfk^&% zHUH0V2i}#pm*yC?KdkxK?K{?7oEjP#6vQuA5imU99r^NI`O7w{pX>0);jXeC?)D

TQ#@e1Kh?DIyt+l;n>U|6jrIG!Ppx9c2NoDV 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 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}}