|
11 | 11 |
|
12 | 12 | import javax.annotation.Nonnull;
|
13 | 13 |
|
14 |
| -import java.util.Collections; |
15 |
| - |
16 | 14 | import ca.uhn.fhir.rest.api.server.IBundleProvider;
|
17 |
| -import ca.uhn.fhir.rest.param.InternalCodingDt; |
18 |
| -import ca.uhn.fhir.rest.param.TokenAndListParam; |
19 | 15 | import ca.uhn.fhir.rest.server.exceptions.InvalidRequestException;
|
20 | 16 | import ca.uhn.fhir.rest.server.exceptions.ResourceNotFoundException;
|
21 | 17 | import ca.uhn.fhir.rest.server.exceptions.UnprocessableEntityException;
|
|
25 | 21 | import org.hl7.fhir.r4.model.Practitioner;
|
26 | 22 | import org.openmrs.Provider;
|
27 | 23 | import org.openmrs.User;
|
28 |
| -import org.openmrs.module.fhir2.FhirConstants; |
29 | 24 | import org.openmrs.module.fhir2.api.FhirGlobalPropertyService;
|
30 | 25 | import org.openmrs.module.fhir2.api.FhirPractitionerService;
|
31 | 26 | import org.openmrs.module.fhir2.api.FhirUserService;
|
@@ -97,36 +92,17 @@ public Practitioner create(@Nonnull Practitioner newResource) {
|
97 | 92 | @Override
|
98 | 93 | @Transactional(readOnly = true)
|
99 | 94 | public IBundleProvider searchForPractitioners(PractitionerSearchParams practitionerSearchParams) {
|
| 95 | + IBundleProvider providerBundle = searchQuery.getQueryResults(practitionerSearchParams.toSearchParameterMap(), dao, |
| 96 | + translator, searchQueryInclude); |
| 97 | + SearchParameterMap theParams = new SearchParameterMap(); |
| 98 | + IBundleProvider userBundle = userService.searchForUsers(theParams); |
100 | 99 |
|
101 |
| - IBundleProvider providerBundle = null; |
102 |
| - IBundleProvider userBundle = null; |
103 |
| - |
104 |
| - if (shouldSearchExplicitlyFor(practitionerSearchParams.getTag(), "provider")) { |
105 |
| - providerBundle = searchQuery.getQueryResults(practitionerSearchParams.toSearchParameterMap(), dao, translator, |
106 |
| - searchQueryInclude); |
107 |
| - } |
108 |
| - |
109 |
| - if (shouldSearchExplicitlyFor(practitionerSearchParams.getTag(), "user")) { |
110 |
| - SearchParameterMap theParams = new SearchParameterMap(); |
111 |
| - userBundle = userService.searchForUsers(theParams); |
112 |
| - } |
113 |
| - |
114 |
| - if (providerBundle != null && userBundle != null) { |
| 100 | + if (!providerBundle.isEmpty() && !userBundle.isEmpty()) { |
115 | 101 | return new TwoSearchQueryBundleProvider(providerBundle, userBundle, globalPropertyService);
|
116 |
| - } else if (providerBundle == null && userBundle != null) { |
| 102 | + } else if (providerBundle.isEmpty() && !userBundle.isEmpty()) { |
117 | 103 | return userBundle;
|
118 | 104 | }
|
119 | 105 |
|
120 | 106 | return providerBundle;
|
121 | 107 | }
|
122 |
| - |
123 |
| - protected boolean shouldSearchExplicitlyFor(TokenAndListParam tokenAndListParam, @Nonnull String valueToCheck) { |
124 |
| - if (tokenAndListParam == null || tokenAndListParam.size() == 0 || valueToCheck.isEmpty()) { |
125 |
| - return true; |
126 |
| - } |
127 |
| - |
128 |
| - return tokenAndListParam.getValuesAsQueryTokens().stream().anyMatch( |
129 |
| - tokenOrListParam -> tokenOrListParam.doesCodingListMatch(Collections |
130 |
| - .singletonList(new InternalCodingDt(FhirConstants.OPENMRS_FHIR_EXT_PRACTITIONER_TAG, valueToCheck)))); |
131 |
| - } |
132 | 108 | }
|
0 commit comments