1212 resolve_expression ,
1313)
1414from ..sdc .exception import MissingParamOperationOutcome
15- from ..sdc .utils import parameter_to_env , parse_parameter_value , validate_context
15+ from ..sdc .utils import get_external_fhir_base_url_from_resource , parameter_to_env , validate_context
1616from ..utils import get_extract_services
1717from .settings import settings
1818from .utils import AidboxSdcRequest , aidbox_operation , get_user_sdk_client , prepare_args
1919
20- # TODO: it's outside from spec, if it's only for data fetching,
21- # TODO: better to use dataEndpoint and it should be handled in `parameter_to_env` function
22- EXTERNAL_FHIR_BASE_URL_PARAM_KEY = "externalFhirBaseUrl"
23-
2420
2521@aidbox_operation (["GET" ], ["Questionnaire" , {"name" : "id" }, "$assemble" ])
2622@prepare_args
@@ -52,7 +48,7 @@ async def constraint_check_operation(request: AidboxSdcRequest):
5248 client = get_user_sdk_client (
5349 request .request ,
5450 request .client ,
55- _get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
51+ get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
5652 )
5753 env = await parameter_to_env (client , request .resource , request .is_fhir )
5854
@@ -79,7 +75,7 @@ async def get_questionnaire_context_operation(request: AidboxSdcRequest):
7975 client = get_user_sdk_client (
8076 request .request ,
8177 request .client ,
82- _get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
78+ get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
8379 )
8480 env = await parameter_to_env (client , request .resource , request .is_fhir )
8581
@@ -100,7 +96,7 @@ async def extract_questionnaire_operation(request: AidboxSdcRequest):
10096 client = get_user_sdk_client (
10197 request .request ,
10298 request .client ,
103- _get_external_fhir_base_url_from_resource (resource , request .is_fhir ),
99+ get_external_fhir_base_url_from_resource (resource , request .is_fhir ),
104100 )
105101 if resource ["resourceType" ] == "QuestionnaireResponse" :
106102 env = {}
@@ -159,7 +155,7 @@ async def extract_questionnaire_instance_operation(request: AidboxSdcRequest):
159155 extract_client = get_user_sdk_client (
160156 request .request ,
161157 request .client ,
162- _get_external_fhir_base_url_from_resource (resource , request .is_fhir ),
158+ get_external_fhir_base_url_from_resource (resource , request .is_fhir ),
163159 )
164160 fhir_questionnaire = (
165161 await request .fhir_client .resources ("Questionnaire" )
@@ -233,7 +229,7 @@ async def populate_questionnaire(request: AidboxSdcRequest):
233229 client = get_user_sdk_client (
234230 request .request ,
235231 request .client ,
236- _get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
232+ get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
237233 )
238234 env = await parameter_to_env (client , request .resource , request .is_fhir )
239235
@@ -250,7 +246,7 @@ async def populate_questionnaire_instance(request: AidboxSdcRequest):
250246 client = get_user_sdk_client (
251247 request .request ,
252248 request .client ,
253- _get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
249+ get_external_fhir_base_url_from_resource (request .resource , request .is_fhir ),
254250 )
255251 fhir_questionnaire = (
256252 await request .fhir_client .resources ("Questionnaire" )
@@ -269,16 +265,3 @@ async def populate_questionnaire_instance(request: AidboxSdcRequest):
269265@aidbox_operation (["POST" ], ["Questionnaire" , "$resolve-expression" ], public = True )
270266def resolve_expression_operation (_operation , request ):
271267 return web .json_response (resolve_expression (request ["resource" ]), dumps = json .dumps )
272-
273-
274- def _get_external_fhir_base_url_from_resource (resource : dict | None , is_fhir : bool ):
275- if not resource or resource .get ("resourceType" ) != "Parameters" :
276- return None
277- for param in resource .get ("parameter" , []):
278- if param .get ("name" ) != EXTERNAL_FHIR_BASE_URL_PARAM_KEY :
279- continue
280- if "resource" in param :
281- continue
282- value = parse_parameter_value (param , is_fhir )
283- return value or None
284- return None
0 commit comments