Запрос Hapi Fhir с И / ИЛИ с картой

Используя Hapi Fhir, я пытаюсь написать запрос, чтобы использовать карту для передачи условия where, как показано ниже:

Map<String, List<IQueryParameterType>> hmParameter = criteria.getMapForWhere();

Bundle bundle = fhirClientR4Configuration.clientFhihrR4().search().forResource(ServiceRequest.class)
            .where(hmParameter).returnBundle(Bundle.class).execute();

У моего объекта критериев есть метод getMapForWhere() где я заполняю эту карту информацией внутри объекта внешнего интерфейса оболочки следующим образом:

public Map<String, List<IQueryParameterType>> getMapForWhere() {
    Map<String, List<IQueryParameterType>> hmOut = new HashMap<String, List<IQueryParameterType>>();
    // Adding STATUS
    if (this.status != null && !this.status.equals("")) {
        StringParam sp = new StringParam();
        sp.setValue(this.status);
        List<IQueryParameterType> lst = new ArrayList<IQueryParameterType>();
        lst.add(sp);
        hmOut.put(ServiceRequest.SP_STATUS, lst);
    }

    // Adding INTENT
    if (this.intent != null && !this.intent.equals("")) {
        StringParam sp = new StringParam();
        sp.setValue(this.intent);
        List<IQueryParameterType> lst = new ArrayList<IQueryParameterType>();
        lst.add(sp);
        hmOut.put(ServiceRequest.SP_INTENT, lst);
    }

    return hmOut;
}

Этот код отлично работает, когда я хочу написать запрос со всеми AND.

Но если я хочу добавить еще одно условие:

    List<IQueryParameterOr> lstOr = new ArrayList<IQueryParameterOr>();
    
    StringOrListParam lstServices = new StringOrListParam();
    
    StringParam sp = new StringParam();
    StringParam sg = new StringParam();
    
    sp.setValue(MEDICAL_SERVICE_PAI);
    sg.setValue(SOCIAL_SERVICE_PAI);
    lstServices.addOr(sp);
    lstServices.addOr(sg);
    lstOr.add(lstServices);
    
    hmOut.put(ServiceRequest.SP_CATEGORY, lstOr);

Очевидно, что hmOut ошибается, потому что определение этой карты отличается. Но я не знаю, как конвертироватьIParameterOr с IParameterType.

0 ответов

Другие вопросы по тегам