Exemplo n.º 1
0
class PatientSummariesReport(object):
    """total income, total refunds, discounts, ordered price, amount due by certain patient """

    def __init__(self):
        self.patient_id = None
        self.ordersDetailsReport = OrdersDetailsReport()
        self.incomeReport = IncomeReport()
        self.refundsReport = RefundsReport()

    def filterDateRange(self, startDate=None, endDate=None):
        startTime = datetime.time(00, 00)
        endTime = datetime.time(23, 59)

        self.startDate = startDate if startDate else datetime.date.today()
        self.endDate = endDate if endDate else datetime.date.today()

        self.startDate = datetime.datetime.combine(self.startDate, startTime)
        self.endDate = datetime.datetime.combine(self.endDate, endTime)

    def filterByPatient(self, patient_id=None):
        self.patient_id = patient_id

    def result(self):
        self.ordersDetailsReport.filterDateRange(self.startDate, self.endDate)
        self.incomeReport.filterDateRange(self.startDate, self.endDate)
        self.refundsReport.filterDateRange(self.startDate, self.endDate)

        self.ordersDetailsReport.filterByPatient(self.patient_id)
        self.incomeReport.filterByPatient(self.patient_id)
        self.refundsReport.filterByPatient(self.patient_id)

        return {"totalPayments": self.incomeReport.result(),
                "totalRefunds": self.refundsReport.result(),
                "ordersSummary": self.ordersDetailsReport.result()}