Skip to content

Commit

Permalink
Added support to questionnaires search
Browse files Browse the repository at this point in the history
  • Loading branch information
icrc-loliveira committed Jul 12, 2024
1 parent 0fb444e commit 6868571
Showing 1 changed file with 16 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,31 +63,32 @@ public List<Form> getQuestionnairesByIds(@Nonnull Collection<Integer> ids) {
public List<Form> getSearchResults(@Nonnull SearchParameterMap theParams) {
Session session = sessionFactory.openSession();
session.beginTransaction();

Check warning on line 65 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L64-L65

Added lines #L64 - L65 were not covered by tests

// Create CriteriaBuilder
CriteriaBuilder builder = session.getCriteriaBuilder();

Check warning on line 68 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L68

Added line #L68 was not covered by tests

// Create CriteriaQuery for main query
CriteriaQuery<Form> query = builder.createQuery(Form.class);
Root<Form> formRoot = query.from(Form.class);
formRoot.alias("f");

Check warning on line 73 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L71-L73

Added lines #L71 - L73 were not covered by tests

// Create Subquery for FormResource
Subquery<Long> subquery = query.subquery(Long.class);
Root<FormResource> resourceRoot = subquery.from(FormResource.class);
subquery.select(resourceRoot.get("form").get("formId")); // Selecting formId to match in main query

Check warning on line 78 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L76-L78

Added lines #L76 - L78 were not covered by tests

// Add predicates to the subquery
List<Predicate> subqueryPredicates = new ArrayList<>();
//subqueryPredicates.add(builder.equal(resourceRoot.get("form").get("formId"), formRoot.get("formId")));
subqueryPredicates.add(builder.equal(resourceRoot.get("form").get("formId"), formRoot.get("formId")));
subqueryPredicates.add(builder.equal(resourceRoot.get("name"), FhirConstants.FHIR_QUESTIONNAIRE_TYPE));
subquery.where(builder.and(subqueryPredicates.toArray(new Predicate[0])));

Check warning on line 84 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L81-L84

Added lines #L81 - L84 were not covered by tests

// Main query predicates
List<Predicate> mainPredicates = new ArrayList<>();
setupSearchParams(mainPredicates, builder, formRoot, theParams);
mainPredicates.add(builder.equal(formRoot.get("retired"), false));
mainPredicates.add(builder.exists(subquery));

Check warning on line 90 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L87-L90

Added lines #L87 - L90 were not covered by tests

// Add predicates to the query
query.select(formRoot).where(builder.and(mainPredicates.toArray(new Predicate[0])));

Check warning on line 93 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L93

Added line #L93 was not covered by tests

Expand All @@ -104,20 +105,19 @@ private Criteria getSearchResultCriteria(SearchParameterMap theParams) {

return criteria;

Check warning on line 106 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L106

Added line #L106 was not covered by tests
}
@Override
protected void setupSearchParams(Criteria criteria, SearchParameterMap theParams) {

protected void setupSearchParams(List<Predicate> predicates, CriteriaBuilder builder, Root<Form> root,
SearchParameterMap theParams) {
theParams.getParameters().forEach(entry -> {

Check warning on line 111 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L111

Added line #L111 was not covered by tests
switch (entry.getKey()) {
case FhirConstants.NAME_SEARCH_HANDLER:
entry.getValue().forEach(param -> handleName(criteria, (StringAndListParam) param.getParam()));
entry.getValue().forEach(param -> {
((StringAndListParam) param.getParam()).getValuesAsQueryTokens().stream().forEach(l -> l.getValuesAsQueryTokens().stream().forEach(v -> {
predicates.add(builder.equal(root.get("name"), v.getValue()));
}));
});
break;

Check warning on line 119 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L114-L119

Added lines #L114 - L119 were not covered by tests
}
});
}

private void handleName(Criteria criteria, StringAndListParam namePattern) {
handleAndListParam(namePattern, (name) -> propertyLike("name", name)).ifPresent(criteria::add);
}

}

Check warning on line 123 in api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

api/src/main/java/org/openmrs/module/fhir2/api/dao/impl/FhirQuestionnaireDaoImpl.java#L122-L123

Added lines #L122 - L123 were not covered by tests

0 comments on commit 6868571

Please sign in to comment.