private async processSearchInclusions()

in src/elasticSearchService.ts [424:456]


    private async processSearchInclusions(
        searchEntries: SearchEntry[],
        request: TypeSearchRequest,
        iterative?: true,
    ): Promise<SearchEntry[]> {
        const { queryParams, allowedResourceTypes, baseUrl } = request;
        const filter: any[] = this.getFilters(request);

        const includeSearchQueries: Query[] = buildIncludeQueries(
            queryParams,
            searchEntries.map((x) => x.resource),
            filter,
            this.fhirSearchParametersRegistry,
            iterative,
        );

        const revIncludeSearchQueries: Query[] = buildRevIncludeQueries(
            queryParams,
            searchEntries.map((x) => x.resource),
            filter,
            this.fhirSearchParametersRegistry,
            this.useKeywordSubFields,
            iterative,
        );

        const lowerCaseAllowedResourceTypes = new Set(allowedResourceTypes.map((r: string) => r.toLowerCase()));
        const allowedInclusionQueries = [...includeSearchQueries, ...revIncludeSearchQueries].filter((query) =>
            lowerCaseAllowedResourceTypes.has(query.resourceType.toLowerCase()),
        );

        const { hits } = await this.executeQueries(allowedInclusionQueries, request);
        return this.hitsToSearchEntries({ hits, baseUrl, mode: 'include' });
    }