Example #1
0
    def list_all_treatments(id_patient, id_treatment_cycle, page_num,
                            page_size, path):
        """
          Method to list all treatments on treatment cycle

        :param id_patient: Specified Patient
        :param id_treatment_cycle: Specified treatment cycle
        :param page_num: Specified page number
        :param page_size: Specified number of elements per page
        :param path: Current endpoint url
        :return: list of information of patients on the system
        """

        PatientService.is_valid_patient(id_patient)
        TreatmentService.is_valid_treatment_cycle(id_treatment_cycle,
                                                  id_patient)

        all_treatments = Treatment.objects.filter(
            treatment_cycle_id=id_treatment_cycle)
        paginator = Paginator(all_treatments, page_size)

        PaginationService.is_valid_page_number(paginator, int(page_num))
        results = TreatmentListSerializer(paginator.page(page_num),
                                          many=True).data

        return PaginationService.get_paginated_results(paginator, page_num,
                                                       path, results)
Example #2
0
    def list_all_physio_treatments(physio_id, page_num, page_size, path):
        """
          Method to list all treatments done by a physiotherapist ordered by date in descending order

        :param physio_id: Specified Physiotherapist
        :param page_num: Specified page number
        :param page_size: Specified number of elements per page
        :param path: Current endpoint url
        :return: list of physiotherapist treatments
        """

        all_treatment_cycles = TreatmentCycle.objects.filter(
            physiotherapist=physio_id)
        all_treatments = Treatment.objects.filter(
            treatment_cycle_id__in=all_treatment_cycles).order_by(
                'end_date').reverse()

        paginator = Paginator(all_treatments, page_size)

        PaginationService.is_valid_page_number(paginator, int(page_num))
        results = TreatmentPhysioListSerializer(paginator.page(page_num),
                                                many=True).data

        return PaginationService.get_paginated_results(paginator, page_num,
                                                       path, results)
Example #3
0
    def list_physios_patients(physio_id, page_num, page_size, path, query=""):
        """
        Method to list patients of a physiotherapist

        :param page_num: Specified page number
        :param page_size: Specified number of elements per page
        :param path: Current endpoint url
        :param query: Search query
        :return: listof patients of a specific physiotherapist
        """

        list_patients = Patient.objects.filter(
            patientphysiotherapist__physiotherapist=physio_id).order_by(
                'person__first_name')

        patient_list = QueryService.get_query_results(
            list_patients, query, {
                "person__first_name": 'A',
                "person__last_name": 'A',
                "person__telephone_number": 'B',
                "person__email": 'B',
                "profession": 'B',
                "diagnostic": 'C',
                "clinical_history": 'C',
                "doctor__name": 'B'
            })

        paginator = Paginator(patient_list, page_size)

        PaginationService.is_valid_page_number(paginator, int(page_num))
        results = PatientListSerializer(paginator.page(page_num),
                                        many=True).data

        return PaginationService.get_paginated_results(paginator, page_num,
                                                       path, results)
    def list_patients(page_num, page_size, path, query=""):
        """
        Method to list patients on the system

        :param page_num: Specified page number
        :param page_size: Specified number of elements per page
        :param path: Current endpoint url
        :param query: Search query
        :return: list of information of patients on the system
        """

        patients_list = QueryService.get_query_results(Patient.objects, query, {"person__first_name": 'A',
                                                                                "person__last_name": 'A',
                                                                                "person__telephone_number": 'B',
                                                                                "person__email": 'B',
                                                                                "profession": 'B',
                                                                                "diagnostic": 'C',
                                                                                "clinical_history": 'C',
                                                                                "doctor__name": 'B'})

        paginator = Paginator(patients_list, page_size)

        PaginationService.is_valid_page_number(paginator, int(page_num))
        results = PatientListSerializer(paginator.page(page_num), many=True).data

        return PaginationService.get_paginated_results(paginator, page_num, path, results)
Example #5
0
    def test_get_paginated_results(self, mock_page_links):
        """
        Tests if the method returns the results in paginated form

        :param mock_page_links: Mock of the page links
        """

        mock_page_links_result = mock_page_links.return_value
        results = Mock()
        expected_value = {'page_links': mock_page_links_result, 'total_pages': self.paginator.num_pages,
                          'total_results': self.paginator.count, 'results': results}

        return_value = PaginationService.get_paginated_results(self.paginator, self.page_num, self.path, results)

        mock_page_links.assert_called_once_with(self.path, self.paginator, self.page_num)

        self.assertEqual(return_value, expected_value)
    def list_body_zones(page_num, page_size, path, query=""):
        """
        Method to list body zones on the system

        :param page_num: Specified page number
        :param page_size: Specified number of elements per page
        :param path: Current endpoint url
        :param query: Search query
        :return: list of body zones on the system
        """

        body_zones_list = QueryService.get_trigram_similarity_results(
            BodyZone, query)

        paginator = Paginator(body_zones_list, page_size)

        PaginationService.is_valid_page_number(paginator, int(page_num))
        results = BodyZoneSerializer(paginator.page(page_num), many=True).data

        return PaginationService.get_paginated_results(paginator, page_num,
                                                       path, results)