@@ -107,6 +107,7 @@ def process_optional_params(
107107 """Parse optional params (date.from, date.to, _include).
108108 Raises ParameterExceptionError for any validation error.
109109 """
110+ errors = []
110111 include = None
111112 date_from = None
112113 date_to = None
@@ -117,36 +118,31 @@ def process_optional_params(
117118
118119 if date_froms :
119120 if len (date_froms ) != 1 :
120- raise ParameterExceptionError (
121- f"Search parameter { ImmunizationSearchParameterName .DATE_FROM } may have one value at most."
122- )
121+ errors .append (f"Search parameter { ImmunizationSearchParameterName .DATE_FROM } may have one value at most." )
123122 try :
124123 date_from = datetime .datetime .strptime (date_froms [0 ], "%Y-%m-%d" ).date ()
125124 except ValueError :
126- raise ParameterExceptionError (
127- f"Search parameter { ImmunizationSearchParameterName .DATE_FROM } must be in format: YYYY-MM-DD"
128- )
125+ errors .append (f"Search parameter { ImmunizationSearchParameterName .DATE_FROM } must be in format: YYYY-MM-DD" )
129126
130127 if date_tos :
131128 if len (date_tos ) != 1 :
132- raise ParameterExceptionError (
133- f"Search parameter { ImmunizationSearchParameterName .DATE_TO } may have one value at most."
134- )
129+ errors .append (f"Search parameter { ImmunizationSearchParameterName .DATE_TO } may have one value at most." )
135130 try :
136131 date_to = datetime .datetime .strptime (date_tos [0 ], "%Y-%m-%d" ).date ()
137132 except ValueError :
138- raise ParameterExceptionError (
139- f"Search parameter { ImmunizationSearchParameterName .DATE_TO } must be in format: YYYY-MM-DD"
140- )
133+ errors .append (f"Search parameter { ImmunizationSearchParameterName .DATE_TO } must be in format: YYYY-MM-DD" )
141134
142135 if includes :
143136 if includes [0 ].lower () != "immunization:patient" :
144- raise ParameterExceptionError (
137+ errors . append (
145138 f"Search parameter { ImmunizationSearchParameterName .INCLUDE } may only be "
146139 f"'Immunization:patient' if provided."
147140 )
148141 include = includes [0 ]
149142
143+ if errors :
144+ raise ParameterExceptionError ("; " .join (errors ))
145+
150146 return date_from , date_to , include
151147
152148
0 commit comments