use of ca.uhn.fhir.rest.param.ReferenceOrListParam in project ipf by oehf.
the class Iti67ResourceProvider method documentReferenceSearch.
@SuppressWarnings("unused")
@Search(type = DocumentReference.class)
public IBundleProvider documentReferenceSearch(@RequiredParam(name = DocumentReference.SP_PATIENT, chainWhitelist = { "", Patient.SP_IDENTIFIER }) ReferenceParam patient, @OptionalParam(name = DocumentReference.SP_STATUS) TokenOrListParam status, @OptionalParam(name = DocumentReference.SP_IDENTIFIER) TokenParam identifier, @OptionalParam(name = DocumentReference.SP_DATE) DateRangeParam date, @OptionalParam(name = STU3_INDEXED) DateRangeParam indexed, @OptionalParam(name = DocumentReference.SP_AUTHOR, chainWhitelist = { Practitioner.SP_FAMILY, Practitioner.SP_GIVEN }) ReferenceAndListParam author, @OptionalParam(name = DocumentReference.SP_CATEGORY) TokenOrListParam category, @OptionalParam(name = STU3_CLASS) TokenOrListParam class_, @OptionalParam(name = DocumentReference.SP_TYPE) TokenOrListParam type, @OptionalParam(name = DocumentReference.SP_SETTING) TokenOrListParam setting, @OptionalParam(name = DocumentReference.SP_PERIOD) DateRangeParam period, @OptionalParam(name = DocumentReference.SP_FACILITY) TokenOrListParam facility, @OptionalParam(name = DocumentReference.SP_EVENT) TokenOrListParam event, @OptionalParam(name = DocumentReference.SP_SECURITY_LABEL) TokenOrListParam securityLabel, @OptionalParam(name = STU3_SECURITY_LABEL) TokenOrListParam label, @OptionalParam(name = DocumentReference.SP_FORMAT) TokenOrListParam format, @OptionalParam(name = DocumentReference.SP_RELATED, chainWhitelist = { "", DocumentReference.SP_IDENTIFIER }) ReferenceOrListParam related, // -> related.identifier
@OptionalParam(name = STU3_RELATED_ID) TokenOrListParam relatedId, // -> related
@OptionalParam(name = STU3_RELATED_REF) ReferenceOrListParam relatedRef, // Extension to ITI-67
@OptionalParam(name = IAnyResource.SP_RES_ID) TokenParam resourceId, @Sort SortSpec sortSpec, @IncludeParam Set<Include> includeSpec, RequestDetails requestDetails, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) {
// Be graceful and accept STU3 parameters as well
var dateParam = date != null ? date : indexed;
var categoryParam = category != null ? category : class_;
var securityLabelParam = securityLabel != null ? securityLabel : label;
// Handle "related" parameters
ReferenceOrListParam relatedParam = new ReferenceOrListParam();
TokenOrListParam relatedIdParam = new TokenOrListParam();
if (relatedRef != null) {
relatedParam = relatedRef;
} else if (relatedId != null) {
relatedIdParam = relatedId;
} else if (related != null) {
related.getValuesAsQueryTokens().stream().filter(referenceParam -> !DocumentReference.SP_IDENTIFIER.equals(referenceParam.getChain())).forEach(relatedParam::addOr);
related.getValuesAsQueryTokens().stream().filter(referenceParam -> DocumentReference.SP_IDENTIFIER.equals(referenceParam.getChain())).map(referenceParam -> referenceParam.toTokenParam(getFhirContext())).forEach(relatedIdParam::addOr);
}
var searchParameters = Iti67SearchParameters.builder().status(status).identifier(identifier).date(dateParam).category(categoryParam).type(type).setting(setting).period(period).facility(facility).event(event).securityLabel(securityLabelParam).format(format).related(relatedParam).relatedId(relatedIdParam)._id(resourceId).sortSpec(sortSpec).includeSpec(includeSpec).fhirContext(getFhirContext()).build();
searchParameters.setAuthor(author);
var patientChain = patient.getChain();
if (Patient.SP_IDENTIFIER.equals(patientChain)) {
searchParameters.setPatientIdentifier(patient.toTokenParam(getFhirContext()));
} else if (patientChain == null || patientChain.isEmpty()) {
searchParameters.setPatientReference(patient);
}
// Run down the route
return requestBundleProvider(null, searchParameters, ResourceType.DocumentReference.name(), httpServletRequest, httpServletResponse, requestDetails);
}
use of ca.uhn.fhir.rest.param.ReferenceOrListParam in project ipf by oehf.
the class Iti66SearchParametersTest method setAuthor.
@Test
public void setAuthor() {
var searchParameters = Iti66SearchParameters.builder().build();
var param = new ReferenceAndListParam().addAnd(new ReferenceOrListParam().addOr(new ReferenceParam(Practitioner.SP_FAMILY, "family"))).addAnd(new ReferenceOrListParam().addOr(new ReferenceParam(Practitioner.SP_GIVEN, "given")));
searchParameters.setAuthor(param);
assertEquals("family", searchParameters.getAuthorFamilyName().getValue());
assertEquals("given", searchParameters.getAuthorGivenName().getValue());
}
use of ca.uhn.fhir.rest.param.ReferenceOrListParam in project ipf by oehf.
the class Iti67SearchParametersTest method setAuthor.
@Test
public void setAuthor() {
var searchParameters = Iti67SearchParameters.builder().build();
var param = new ReferenceAndListParam().addAnd(new ReferenceOrListParam().addOr(new ReferenceParam(Practitioner.SP_FAMILY, "family"))).addAnd(new ReferenceOrListParam().addOr(new ReferenceParam(Practitioner.SP_GIVEN, "given")));
searchParameters.setAuthor(param);
assertEquals("family", searchParameters.getAuthorFamilyName().getValue());
assertEquals("given", searchParameters.getAuthorGivenName().getValue());
}
use of ca.uhn.fhir.rest.param.ReferenceOrListParam in project openmrs-module-fhir2 by openmrs.
the class ConditionSearchQueryTest method searchForObsConditions_shouldSearchForConditionsByMultiplePatientGivenNameOr.
@Test
public void searchForObsConditions_shouldSearchForConditionsByMultiplePatientGivenNameOr() {
ReferenceAndListParam referenceParam = new ReferenceAndListParam();
ReferenceParam patient = new ReferenceParam();
patient.setValue(PATIENT_GIVEN_NAME);
patient.setChain(Patient.SP_GIVEN);
ReferenceParam badPatient = new ReferenceParam();
badPatient.setValue(PATIENT_WRONG_GIVEN_NAME);
badPatient.setChain(Patient.SP_GIVEN);
referenceParam.addValue(new ReferenceOrListParam().add(patient).add(badPatient));
SearchParameterMap theParams = new SearchParameterMap().addParameter(FhirConstants.PATIENT_REFERENCE_SEARCH_HANDLER, referenceParam);
IBundleProvider results = search(theParams);
List<IBaseResource> resultList = get(results);
assertThat(results, notNullValue());
assertThat(resultList, not(empty()));
assertEquals(resultList.size(), 2);
}
use of ca.uhn.fhir.rest.param.ReferenceOrListParam in project openmrs-module-fhir2 by openmrs.
the class ConditionSearchQueryTest method searchForObsConditions_shouldReturnConditionByPatientIdentifier.
@Test
public void searchForObsConditions_shouldReturnConditionByPatientIdentifier() {
ReferenceParam patientReference = new ReferenceParam(Patient.SP_IDENTIFIER, PATIENT_IDENTIFIER);
ReferenceAndListParam patientList = new ReferenceAndListParam();
patientList.addAnd(new ReferenceOrListParam().addOr(patientReference));
SearchParameterMap theParams = new SearchParameterMap().addParameter(FhirConstants.PATIENT_REFERENCE_SEARCH_HANDLER, patientList);
IBundleProvider results = search(theParams);
List<IBaseResource> resultList = get(results);
assertThat(results, notNullValue());
assertThat(resultList, not(empty()));
assertEquals(resultList.size(), 2);
assertThat(((org.hl7.fhir.r4.model.Condition) resultList.iterator().next()).getSubject().getReference(), endsWith(PATIENT_UUID));
}
Aggregations