setConditions method Null safety

Future<Patient?> setConditions(
  1. {required Patient patient,
  2. required BuiltSet<LocalizedType<Condition>> conditions}
)

Writes the specified set of conditions to the patient profile. Overwrites all existing conditions.

Implementation

Future<Patient?> setConditions(
    {required final Patient patient,
    required final BuiltSet<LocalizedType<Condition>> conditions}) async {
  final gqlQueryString = '''
    mutation SetPatientConditions {
      updatePatient(
        input: {
          where: { id: "${patient.id}" }
          data: {
            conditions: [${conditions.map<String>((e) => e.defaultValue.id.toString()).toList().join(',')}]
          }
        }
      ) {
        patient {
          conditions { id }
        }
      }
    }
  ''';

  try {
    final queryResult = await graphQLClient
        .mutate<void>(MutationOptions(document: gql(gqlQueryString)));

    if (queryResult.hasException) {
      logger?.e(queryResult.exception.toString());
      return null;
    }

    final modifiedPatient =
        patient.rebuild((p) => p..conditions = conditions.toBuilder());

    _sendPatientUpdate(patient: modifiedPatient);

    return modifiedPatient;
  } catch (e, stackTrace) {
    logger?.e('Could not set list of conditions on patient', e, stackTrace);
    return null;
  }
}