From 47b0b33e6d69b6ff995c1285a2eecd14162569ea Mon Sep 17 00:00:00 2001 From: CynthiaKamau Date: Fri, 28 Jun 2024 11:22:46 +0300 Subject: [PATCH] O3-3503 Fix problem datasource fetch results based on problem concept classes --- src/datasources/concept-data-source.ts | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/datasources/concept-data-source.ts b/src/datasources/concept-data-source.ts index 6efd954b..1f4253b2 100644 --- a/src/datasources/concept-data-source.ts +++ b/src/datasources/concept-data-source.ts @@ -18,11 +18,24 @@ export class ConceptDataSource extends BaseOpenMRSDataSource { const urlParts = apiUrl.split('searchType=fuzzy'); apiUrl = `${urlParts[0]}searchType=fuzzy&class=${config.class}&${urlParts[1]}`; } else { - return openmrsFetch(searchTerm ? `${apiUrl}&q=${searchTerm}` : apiUrl).then(({ data }) => { - return data.results.filter( - (concept) => concept.conceptClass && config.class.includes(concept.conceptClass.uuid), - ); - }); + const fetchAllConcepts = (): Promise => { + const fetchConceptsByClass = (classUuid: string) => { + const urlParts = apiUrl.split('searchType=fuzzy'); + const url = `${urlParts[0]}searchType=fuzzy&class=${classUuid}&${urlParts[1] || ''}`; + return openmrsFetch(url).then(({ data }) => { + return data.results; + }); + }; + + return Promise.all(config.class.map(fetchConceptsByClass)) + .then((results) => results.flat()) + .catch((error) => { + console.error('Error fetching data:', error); + return []; + }); + }; + + return fetchAllConcepts(); } }