Skip to content

Commit

Permalink
Fix author ext being added to item instead of responseItem
Browse files Browse the repository at this point in the history
  • Loading branch information
barhodes committed Dec 3, 2024
1 parent 8d72254 commit 37ba30b
Show file tree
Hide file tree
Showing 4 changed files with 224 additions and 134 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public ProcessItem(ExpressionProcessor expressionProcessor) {

public IBaseBackboneElement processItem(PopulateRequest request, IBaseBackboneElement item) {
final var responseItem = createResponseItem(request.getFhirVersion(), item);
populateAnswer(request, responseItem, getInitialValue(request, item));
populateAnswer(request, responseItem, getInitialValue(request, item, responseItem));
return responseItem;
}

Expand All @@ -44,15 +44,16 @@ protected void populateAnswer(PopulateRequest request, IBaseBackboneElement resp
request.getModelResolver().setValue(responseItem, "answer", answers);
}

protected List<IBase> getInitialValue(PopulateRequest request, IBaseBackboneElement item) {
protected List<IBase> getInitialValue(
PopulateRequest request, IBaseBackboneElement item, IBaseBackboneElement responseItem) {
List<IBase> results;
var expression = expressionProcessor.getItemInitialExpression(request, item);
if (expression != null) {
var itemLinkId = request.getItemLinkId(item);
try {
results = expressionProcessor.getExpressionResultForItem(request, expression, itemLinkId);
if (results != null && !results.isEmpty()) {
addAuthorExtension(request, item);
addAuthorExtension(request, responseItem);
}
} catch (Exception e) {
var message = String.format(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ IBaseBackboneElement createResponseContextItem(
if (extension != null) {
// pass the context resource(s) as a parameter to the evaluation
request.addContextParameter("%" + contextName, context);
populateAnswer(request, responseItem, getInitialValue(request, item));
populateAnswer(request, responseItem, getInitialValue(request, item, responseItem));
}
}
return responseItem;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
import org.hl7.fhir.r4.model.Questionnaire;
import org.hl7.fhir.r4.model.Questionnaire.QuestionnaireItemComponent;
import org.hl7.fhir.r4.model.QuestionnaireResponse.QuestionnaireResponseItemComponent;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -132,11 +133,14 @@ void getExpressionResultsShouldReturnEmptyListIfInitialExpressionIsNull() {
final PopulateRequest prePopulateRequest =
newPopulateRequestForVersion(FhirVersionEnum.R4, libraryEngine, questionnaire);
final QuestionnaireItemComponent questionnaireItemComponent = new QuestionnaireItemComponent();
final QuestionnaireResponseItemComponent questionnaireResponseItemComponent =
new QuestionnaireResponseItemComponent();
doReturn(null)
.when(expressionProcessor)
.getItemInitialExpression(prePopulateRequest, questionnaireItemComponent);
// execute
final List<IBase> actual = processItem.getInitialValue(prePopulateRequest, questionnaireItemComponent);
final List<IBase> actual = processItem.getInitialValue(
prePopulateRequest, questionnaireItemComponent, questionnaireResponseItemComponent);
// validate
assertTrue(actual.isEmpty());
verify(expressionProcessor).getItemInitialExpression(prePopulateRequest, questionnaireItemComponent);
Expand All @@ -153,6 +157,8 @@ void getExpressionResultsShouldReturnListOfResourcesIfInitialExpressionIsNotNull
newPopulateRequestForVersion(FhirVersionEnum.R4, libraryEngine, questionnaire);
final QuestionnaireItemComponent questionnaireItemComponent = new QuestionnaireItemComponent();
questionnaireItemComponent.setLinkId("linkId");
final QuestionnaireResponseItemComponent questionnaireResponseItemComponent =
new QuestionnaireResponseItemComponent();
final CqfExpression expression = withExpression();
doReturn(expression)
.when(expressionProcessor)
Expand All @@ -161,7 +167,8 @@ void getExpressionResultsShouldReturnListOfResourcesIfInitialExpressionIsNotNull
.when(expressionProcessor)
.getExpressionResultForItem(prePopulateRequest, expression, "linkId");
// execute
final List<IBase> actual = processItem.getInitialValue(prePopulateRequest, questionnaireItemComponent);
final List<IBase> actual = processItem.getInitialValue(
prePopulateRequest, questionnaireItemComponent, questionnaireResponseItemComponent);
// validate
assertEquals(expected, actual);
verify(expressionProcessor).getItemInitialExpression(prePopulateRequest, questionnaireItemComponent);
Expand Down
Loading

0 comments on commit 37ba30b

Please sign in to comment.