Implementation
Future<fhir.Questionnaire?> getQuestionnaire(String canonicalUrl) async {
final gqlQueryString = '''
query FetchQuestionnaire {
questionnaires(where: { url: "$canonicalUrl" }) {
${QuestionnaireGqlEntity.gqlQueryFragment}
}
}
''';
try {
final queryResult = await graphQLClient
.query<void>(QueryOptions(document: gql(gqlQueryString)));
if (queryResult.hasException) {
logger?.e(queryResult.exception.toString());
return null;
}
final data = queryResult.data!['questionnaires'] as List<dynamic>;
final q = data
.map((dynamic e) =>
QuestionnaireGqlEntity.fromJson(e as Map<String, dynamic>))
.where((element) => element != null)
.map((e) => e!.toQuestionnaire())
.first;
return q;
} catch (e, stackTrace) {
logger?.e('Could not find questionnaire $canonicalUrl: ', e.toString(),
stackTrace);
return null;
}
}