22import uuid
33from datetime import UTC , datetime
44from http import HTTPStatus
5+ from typing import Any
56
67from flask import Blueprint , make_response , request
78from flask .typing import ResponseReturnValue
@@ -45,8 +46,12 @@ def check_eligibility(
4546) -> ResponseReturnValue :
4647 logger .info ("checking nhs_number %r in %r" , nhs_number , eligibility_service , extra = {"nhs_number" : nhs_number })
4748 try :
49+ query_params = get_or_default_query_params ()
4850 eligibility_status = eligibility_service .get_eligibility_status (
49- nhs_number , include_actions_flag = get_include_actions_flag ()
51+ nhs_number ,
52+ query_params ["includeActions" ],
53+ query_params ["conditions" ],
54+ query_params ["category" ],
5055 )
5156 except UnknownPersonError :
5257 return handle_unknown_person_error (nhs_number )
@@ -58,13 +63,36 @@ def check_eligibility(
5863 )
5964
6065
61- def get_include_actions_flag () -> bool :
62- if not request .args .get ("includeActions" ):
63- logger .info ("Defaulting includeActions query param to Y as no value was provided" )
64- include_actions_flag = True
66+ def get_or_default_query_params () -> dict [str , Any ]:
67+ default_query_params = {"category" : "ALL" , "conditions" : ["ALL" ], "includeActions" : "Y" }
68+
69+ if not request .args :
70+ logger .info ("Defaulting all query params as no value was provided, using values %s" , default_query_params )
71+ return default_query_params
72+
73+ raw_args = request .args .to_dict ()
74+ query_params : dict [str , Any ] = {}
75+
76+ include_actions = raw_args .get ("includeActions" )
77+ query_params ["includeActions" ] = (
78+ include_actions .upper () if include_actions else default_query_params ["includeActions" ]
79+ )
80+ if include_actions is None :
81+ logger .info ("Defaulting includeActions query param to 'Y' as no value was provided" )
82+
83+ category = raw_args .get ("category" )
84+ query_params ["category" ] = category .upper () if category else default_query_params ["category" ]
85+ if category is None :
86+ logger .info ("Defaulting category query param to 'ALL' as no value was provided" )
87+
88+ conditions_str = raw_args .get ("conditions" )
89+ if conditions_str :
90+ query_params ["conditions" ] = conditions_str .upper ().split ("," )
6591 else :
66- include_actions_flag = request .args .get ("includeActions" ) == "Y"
67- return include_actions_flag
92+ query_params ["conditions" ] = default_query_params ["conditions" ]
93+ logger .info ("Defaulting conditions query param to 'ALL' as no value was provided" )
94+
95+ return query_params
6896
6997
7098def handle_unknown_person_error (nhs_number : NHSNumber ) -> ResponseReturnValue :
0 commit comments