@@ -44,50 +44,43 @@ class SearchView(FhirDataView):
4444 ]
4545
4646 def get (self , request , resource_type , * args , ** kwargs ):
47- serializer = ParamSerializer (data = request .query_params )
48- serializer .is_valid (raise_exception = True )
49- query_params = serializer .data
50-
51- # Verify paging inputs. Casting an invalid int will throw a ValueError
52- try :
53- start_index = int (query_params .get (START_PARAMETER , 0 ))
54- except ValueError :
55- raise exceptions .ParseError (detail = '%s must be an integer between zero and the number of results' % START_PARAMETER )
56-
57- if start_index < 0 :
58- raise exceptions .ParseError ()
59-
60- try :
61- page_size = int (query_params .get (SIZE_PARAMETER , DEFAULT_PAGE_SIZE ))
62- except ValueError :
63- raise exceptions .ParseError (detail = '%s must be an integer between 1 and %s' % (SIZE_PARAMETER , MAX_PAGE_SIZE ))
64-
65- if page_size <= 0 or page_size > MAX_PAGE_SIZE :
66- raise exceptions .ParseError ()
67-
6847 data = self .fetch_data (request , resource_type , * args , ** kwargs )
69-
70- if data .get ('total' , 0 ) > 0 :
71- # TODO update to pagination class
72- data ['entry' ] = data ['entry' ][start_index :start_index + page_size ]
73- replay_parameters = self .build_parameters (request )
74- data ['link' ] = get_paging_links (request .build_absolute_uri ('?' ),
75- start_index ,
76- page_size ,
77- data ['total' ],
78- replay_parameters )
79-
8048 return Response (data )
8149
8250 def build_parameters (self , request , * args , ** kwargs ):
8351 patient_id = request .crosswalk .fhir_id
8452 resource_type = request .resource_type
53+
8554 get_parameters = {
86- '_format' : 'application/json+fhir'
55+ '_format' : 'application/json+fhir' ,
8756 }
8857
8958 if resource_type == 'ExplanationOfBenefit' :
59+ serializer = ParamSerializer (data = request .query_params )
60+ serializer .is_valid (raise_exception = True )
61+ query_params = serializer .data
62+
63+ # Verify paging inputs. Casting an invalid int will throw a ValueError
64+ try :
65+ start_index = int (query_params .get (START_PARAMETER , 0 ))
66+ except ValueError :
67+ raise exceptions .ParseError (
68+ detail = '%s must be an integer between zero and the number of results' % START_PARAMETER )
69+
70+ if start_index < 0 :
71+ raise exceptions .ParseError ()
72+
73+ try :
74+ page_size = int (query_params .get (SIZE_PARAMETER , DEFAULT_PAGE_SIZE ))
75+ except ValueError :
76+ raise exceptions .ParseError (detail = '%s must be an integer between 1 and %s' % (SIZE_PARAMETER , MAX_PAGE_SIZE ))
77+
78+ if page_size <= 0 or page_size > MAX_PAGE_SIZE :
79+ raise exceptions .ParseError ()
80+
9081 get_parameters ['patient' ] = patient_id
82+ get_parameters ['startIndex' ] = start_index
83+ get_parameters ['_count' ] = page_size
9184 elif resource_type == 'Coverage' :
9285 get_parameters ['beneficiary' ] = 'Patient/' + patient_id
9386 elif resource_type == 'Patient' :
0 commit comments