Implementation
Future<BuiltList<Patient>> getPatients({
final int offset = 0,
final int? limit,
BuiltList<Organization>? organizations,
}) async {
final gqlQueryString = '''
query Find {
patients(
start: $offset
${limit == null ? 'limit: $limit' : ''}
where: {
${organizations == null || organizations.isEmpty ? '' : 'managingOrganization_in: [${organizations.map((p0) => p0.id).join(',')}]'}
}
) {
${PatientGqlEntity.gqlQueryFragment}
}
}
''';
try {
final queryResult = await graphQLClient.query<void>(QueryOptions(
document: gql(gqlQueryString),
fetchPolicy: FetchPolicy.networkOnly,
));
if (queryResult.hasException) {
logger?.e(queryResult.exception.toString());
return <Patient>[].toBuiltList();
}
final data = (queryResult.data?['patients'] ?? []) as List<dynamic>;
final l = data
.map((dynamic e) =>
PatientGqlEntity.fromJson(e as Map<String, dynamic>))
.where((element) => element != null)
.map((element) => element!.toPatient())
.toBuiltList();
return l;
} catch (e, stackTrace) {
logger?.e(
'Could not retrieve patient instance from backend', e, stackTrace);
}
return <Patient>[].toBuiltList();
}