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)
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_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)
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)
def test_first_get_results_page_links(self): """ Tests if the method returns the page link on a first page """ expected_result = PaginationLinksDataRepository.get_first_pagination_links(1, self.page_size, self.paginator, self.host) result = PaginationService.get_results_page_links(self.path, self.paginator, str(1)) self.assertEqual(result, expected_result)
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)
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 test_valid_is_valid_page_number(self): """ Tests if the method validates a valid page number """ PaginationService.is_valid_page_number(self.paginator, 1)