getCarePlans method Null safety
Retrieves all care plans for a user. Will return an empty list if no care plans exist or if the backend query failed.
Implementation
Future<BuiltList<CarePlan>> getCarePlans({
final int offset = 0,
final int limit = 200,
final Patient? subject,
}) async {
final gqlQueryString = '''
query FetchCarePlans {
carePlans(
start: $offset,
limit: $limit,
where: {
${subject != null ? 'subject: ${subject.id}' : ''}
}
) {
${CarePlanGqlEntity.gqlQueryFragment}
}
}
''';
try {
final queryResult = await graphQLClient.query<void>(QueryOptions(
document: gql(gqlQueryString), fetchPolicy: FetchPolicy.networkOnly));
if (queryResult.hasException) {
logger?.e(queryResult.exception.toString());
return BuiltList<CarePlan>();
}
final data = queryResult.data!['carePlans'] as List<dynamic>;
final l = data
.map((dynamic e) =>
CarePlanGqlEntity.fromJson(e as Map<String, dynamic>))
.where((element) => element != null)
.map((element) => element!.toCarePlan())
.toBuiltList();
if (!_carePlanStreamController.isClosed) {
_carePlanStreamController
.add(l.map((c) => EntityRead<CarePlan>(c)).toBuiltList());
}
return l;
} catch (e, stackTrace) {
logger?.e('Could not read care plans: ', e.toString(), stackTrace);
return BuiltList<CarePlan>();
}
}