Skip to content

Commit

Permalink
refactor concept datasource
Browse files Browse the repository at this point in the history
  • Loading branch information
kajambiya committed Oct 6, 2023
1 parent 51fdc75 commit ad85f5b
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 34 deletions.
13 changes: 6 additions & 7 deletions src/api/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,13 +260,12 @@ export interface DataSource<T> {
toUuidAndDisplay(item: T): OpenmrsResource;
}

export interface ControlTemplate{
name: string,
datasource: DataSourceParameters
export interface ControlTemplate {
name: string;
datasource: DataSourceParameters;
}

export interface DataSourceParameters{
name: string,
config?: Record<string, any>
export interface DataSourceParameters {
name: string;
config?: Record<string, any>;
}

17 changes: 0 additions & 17 deletions src/datasources/class-array-datasource.ts

This file was deleted.

14 changes: 11 additions & 3 deletions src/datasources/concept-data-source.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,21 @@ import { BaseOpenMRSDataSource } from './data-source';

export class ConceptDataSource extends BaseOpenMRSDataSource {
constructor() {
super('/ws/rest/v1/concept?name=&searchType=fuzzy&v=custom:(uuid,display)');
super('/ws/rest/v1/concept?name=&searchType=fuzzy&v=custom:(uuid,display,conceptClass:(uuid,display))');
}

fetchData(searchTerm: string, config?: Record<string, any>): Promise<any[]> {
if (config?.class) {
let urlParts = this.url.split('name=');
this.url = `${urlParts[0]}&name=&class=${config.class}&${urlParts[1]}`;
if (typeof config.class == 'string') {
let urlParts = this.url.split('name=');
this.url = `${urlParts[0]}&name=&class=${config.class}&${urlParts[1]}`;
} else {
return openmrsFetch(searchTerm ? `${this.url}&q=${searchTerm}` : this.url).then(({ data }) => {
return data.results.filter(
concept => concept.conceptClass && config.class.includes(concept.conceptClass.uuid),
);
});
}
}
return openmrsFetch(searchTerm ? `${this.url}&q=${searchTerm}` : this.url).then(({ data }) => {
return data.results;
Expand Down
6 changes: 2 additions & 4 deletions src/registry/inbuilt-components/control-templates.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ControlTemplate } from "../../api/types";
import { ControlTemplate } from '../../api/types';

export const controlTemplates: Array<ControlTemplate> = [
{
Expand All @@ -15,9 +15,7 @@ export const controlTemplates: Array<ControlTemplate> = [
datasource: {
name: 'problem_datasource',
config: {
class: ['8d4918b0-c2cc-11de-8d13-0010c6dffd0f',
'8d492954-c2cc-11de-8d13-0010c6dffd0f',
]
class: ['8d4918b0-c2cc-11de-8d13-0010c6dffd0f', '8d492954-c2cc-11de-8d13-0010c6dffd0f'],
},
},
},
Expand Down
5 changes: 2 additions & 3 deletions src/registry/inbuilt-components/inbuiltDataSources.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { DataSource } from '../../api/types';
import { ClassArrayDataSource } from '../../datasources/class-array-datasource';
import { ConceptDataSource } from '../../datasources/concept-data-source';
import { LocationDataSource } from '../../datasources/location-data-source';
import { RegistryItem } from '../registry';
Expand All @@ -18,8 +17,8 @@ export const inbuiltDataSources: Array<RegistryItem<DataSource<any>>> = [
},
{
name: 'problem_datasource',
component: new ClassArrayDataSource(),
}
component: new ConceptDataSource(),
},
];

export const validateInbuiltDatasource = (name: string) => {
Expand Down

0 comments on commit ad85f5b

Please sign in to comment.