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' });
}