Skip to content

Commit

Permalink
add support for rendering a problem by concept class
Browse files Browse the repository at this point in the history
  • Loading branch information
kajambiya committed Oct 3, 2023
1 parent 3b490ee commit 51fdc75
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 1 deletion.
11 changes: 11 additions & 0 deletions src/api/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -259,3 +259,14 @@ export interface DataSource<T> {
*/
toUuidAndDisplay(item: T): OpenmrsResource;
}

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

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

17 changes: 17 additions & 0 deletions src/datasources/class-array-datasource.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { openmrsFetch } from '@openmrs/esm-framework';
import { BaseOpenMRSDataSource } from './data-source';

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

fetchData(searchTerm: string, config?: Record<string, any>): Promise<any[]> {
return openmrsFetch(searchTerm ? `${this.url}&q=${searchTerm}` : this.url).then(({ data }) => {
if(config?.class){
return data.results.filter(concept => concept.conceptClass && config.class.includes(concept.conceptClass.uuid))
}
return data.results;
});
}
}
15 changes: 14 additions & 1 deletion src/registry/inbuilt-components/control-templates.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
export const controlTemplates = [
import { ControlTemplate } from "../../api/types";

export const controlTemplates: Array<ControlTemplate> = [
{
name: 'drug',
datasource: {
Expand All @@ -8,6 +10,17 @@ export const controlTemplates = [
},
},
},
{
name: 'problem',
datasource: {
name: 'problem_datasource',
config: {
class: ['8d4918b0-c2cc-11de-8d13-0010c6dffd0f',
'8d492954-c2cc-11de-8d13-0010c6dffd0f',
]
},
},
},
];

export const getControlTemplate = (name: string) => {
Expand Down
5 changes: 5 additions & 0 deletions src/registry/inbuilt-components/inbuiltDataSources.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
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 @@ -15,6 +16,10 @@ export const inbuiltDataSources: Array<RegistryItem<DataSource<any>>> = [
name: 'drug_datasource',
component: new ConceptDataSource(),
},
{
name: 'problem_datasource',
component: new ClassArrayDataSource(),
}
];

export const validateInbuiltDatasource = (name: string) => {
Expand Down
4 changes: 4 additions & 0 deletions src/registry/inbuilt-components/template-component-map.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@ export const templateToComponentMap = [
name: 'drug',
baseControlComponent: UISelectExtended,
},
{
name: 'problem',
baseControlComponent: UISelectExtended,
}
];

0 comments on commit 51fdc75

Please sign in to comment.