validateQuestionnaireResponse function
Future<ValidationResults>
validateQuestionnaireResponse({
- required QuestionnaireResponse questionnaireResponse,
- required ResourceCache resourceCache,
Validates a QuestionnaireResponse against the corresponding
Questionnaire.
Implementation
Future<ValidationResults> validateQuestionnaireResponse({
required QuestionnaireResponse questionnaireResponse,
required ResourceCache resourceCache,
}) async {
final results = ValidationResults();
// Extract the questionnaire URL
final questionnaireUrl = questionnaireResponse.questionnaire?.toString();
if (questionnaireUrl == null) {
return results
..addResult(
null,
'QuestionnaireResponse does not reference a Questionnaire',
Severity.error,
);
}
// Retrieve the Questionnaire
final questionnaireDef =
await resourceCache.getCanonicalResource(questionnaireUrl);
if (questionnaireDef == null) {
return results
..addResult(
null,
'Failed to retrieve Questionnaire: $questionnaireUrl',
Severity.error,
);
} else if (questionnaireDef is! Questionnaire) {
return results
..addResult(
null,
'Resource at $questionnaireUrl is not a Questionnaire',
Severity.error,
);
}
// Validate the QuestionnaireResponse against the Questionnaire
results.combineResults(
await _validateResponseItems(
questionnaire: questionnaireDef,
response: questionnaireResponse,
),
);
return results;
}