import { Type, validators } from '@openmrs/esm-framework'; export const conceptSourceTypes = ['Concept class', 'Concept set', 'Answer to', 'any'] as const; export type ConceptSourceType = (typeof conceptSourceTypes)[number]; const sourceTypeDescription = 'How the paired UUID filters concept search results: ' + '"Concept class" filters by concept class (REST `class`); ' + '"Concept set" returns set members (REST `memberOf`); ' + '"Answer to" returns answers to the given coded question (REST `answerTo`); ' + '"any" ignores the UUID and searches all concepts.'; export const configSchema = { detailedViewPageSize: { _type: Type.Number, _description: 'Number of rows per page in the procedures detailed summary view', _default: 10, }, procedureConceptUuid: { _type: Type.UUID, _description: 'UUID used to constrain the procedure concept search. Its meaning is determined by `procedureConceptSourceType`.', _default: '8d490bf4-c2cc-11de-8d13-0010c6dffd0f', // Procedure concept class }, procedureConceptSourceType: { _type: Type.String, _description: sourceTypeDescription, _default: 'Concept class', _validators: [validators.oneOf(conceptSourceTypes)], }, bodySiteConceptUuid: { _type: Type.UUID, _description: 'UUID used to constrain the body-site concept search. Its meaning is determined by `bodySiteConceptSourceType`.', _default: '8d491c7a-c2cc-11de-8d13-0010c6dffd0f', // Anatomy concept class }, bodySiteConceptSourceType: { _type: Type.String, _description: sourceTypeDescription, _default: 'Concept class', _validators: [validators.oneOf(conceptSourceTypes)], }, statusConceptUuid: { _type: Type.UUID, _description: 'UUID used to constrain the procedure-status concept search. Its meaning is determined by `statusConceptSourceType`.', _default: 'f0d47b45-8303-4cdc-a9f2-c37135a3700f', }, statusConceptSourceType: { _type: Type.String, _description: sourceTypeDescription, _default: 'Answer to', _validators: [validators.oneOf(conceptSourceTypes)], }, durationUnitConceptUuid: { _type: Type.UUID, _description: 'UUID used to constrain the duration-unit concept search. Its meaning is determined by `durationUnitConceptSourceType`.', _default: '1732AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', }, durationUnitConceptSourceType: { _type: Type.String, _description: sourceTypeDescription, _default: 'Answer to', _validators: [validators.oneOf(conceptSourceTypes)], }, }; export interface ConfigObject { detailedViewPageSize: number; procedureConceptUuid: string; procedureConceptSourceType: ConceptSourceType; bodySiteConceptUuid: string; bodySiteConceptSourceType: ConceptSourceType; statusConceptUuid: string; statusConceptSourceType: ConceptSourceType; durationUnitConceptUuid: string; durationUnitConceptSourceType: ConceptSourceType; }