@openmrs/esm-form-engine-lib 3.0.1 → 3.1.0-pre.1691

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/__mocks__/forms/rfe-forms/diagnosis-test-form.json +60 -0
  2. package/__mocks__/forms/rfe-forms/mockHistoricalvisitsEncounter.json +40 -0
  3. package/dist/openmrs-esm-form-engine-lib.js +1 -1
  4. package/package.json +1 -1
  5. package/src/adapters/encounter-diagnosis-adapter.test.ts +232 -0
  6. package/src/adapters/encounter-diagnosis-adapter.ts +116 -0
  7. package/src/adapters/obs-adapter.test.ts +2 -0
  8. package/src/adapters/program-state-adapter.test.ts +2 -0
  9. package/src/components/inputs/multi-select/multi-select.component.tsx +5 -6
  10. package/src/components/inputs/ui-select-extended/ui-select-extended.component.tsx +0 -7
  11. package/src/components/inputs/ui-select-extended/ui-select-extended.test.tsx +14 -5
  12. package/src/components/renderer/form/form-renderer.component.tsx +5 -2
  13. package/src/components/renderer/form/state.ts +6 -1
  14. package/src/components/repeat/repeat.component.tsx +4 -0
  15. package/src/constants.ts +1 -0
  16. package/src/form-engine.test.tsx +170 -3
  17. package/src/hooks/useConcepts.ts +10 -11
  18. package/src/hooks/useFormStateHelpers.ts +5 -0
  19. package/src/hooks/usePatientPrograms.ts +27 -31
  20. package/src/hooks/useRestApiMaxResults.ts +35 -0
  21. package/src/processors/encounter/encounter-form-processor.ts +32 -25
  22. package/src/processors/encounter/encounter-processor-helper.ts +45 -3
  23. package/src/provider/form-provider.tsx +2 -0
  24. package/src/registry/inbuilt-components/inbuiltFieldValueAdapters.ts +5 -0
  25. package/src/transformers/default-schema-transformer.ts +32 -0
  26. package/src/types/domain.ts +36 -0
  27. package/src/types/schema.ts +6 -0
@@ -148,6 +148,9 @@ function transformByType(question: FormField) {
148
148
  ? 'date'
149
149
  : question.questionOptions.rendering;
150
150
  break;
151
+ case 'diagnosis':
152
+ handleDiagnosis(question);
153
+ break;
151
154
  }
152
155
  }
153
156
 
@@ -276,3 +279,32 @@ function handleQuestionsWithObsComments(sectionQuestions: Array<FormField>): Arr
276
279
 
277
280
  return augmentedQuestions;
278
281
  }
282
+
283
+ function handleDiagnosis(question: FormField) {
284
+ if (
285
+ ('dataSource' in question.questionOptions && question.questionOptions['dataSource'] === 'diagnoses') ||
286
+ question.type === 'diagnosis'
287
+ ) {
288
+ question.questionOptions.datasource = {
289
+ name: 'problem_datasource',
290
+ config: {
291
+ class: question.questionOptions.diagnosis?.conceptClasses,
292
+ },
293
+ };
294
+ if (question.questionOptions.diagnosis?.conceptSet) {
295
+ question.questionOptions = {
296
+ ...question.questionOptions,
297
+ concept: question.questionOptions.diagnosis?.conceptSet,
298
+ datasource: {
299
+ name: 'problem_datasource',
300
+ config: {
301
+ useSetMembersByConcept: true,
302
+ },
303
+ },
304
+ };
305
+ }
306
+ question.questionOptions.isSearchable = true;
307
+
308
+ delete question.questionOptions['dataSource'];
309
+ }
310
+ }
@@ -12,6 +12,7 @@ export interface OpenmrsEncounter {
12
12
  visit?: OpenmrsResource | string;
13
13
  encounterProviders?: Array<Record<string, any>>;
14
14
  form?: OpenmrsFormResource;
15
+ diagnoses?: Array<Diagnosis>;
15
16
  }
16
17
 
17
18
  export interface OpenmrsObs extends OpenmrsResource {
@@ -165,6 +166,10 @@ export interface PatientProgram extends OpenmrsResource {
165
166
  states?: Array<ProgramWorkflowState>;
166
167
  }
167
168
 
169
+ export interface ProgramsFetchResponse {
170
+ results: Array<PatientProgram>;
171
+ }
172
+
168
173
  export interface PatientProgramPayload {
169
174
  program?: string;
170
175
  uuid?: string;
@@ -187,3 +192,34 @@ export interface PatientIdentifier {
187
192
  location?: string;
188
193
  preferred?: boolean;
189
194
  }
195
+
196
+ export interface DiagnosisPayload {
197
+ patient: string;
198
+ condition: null;
199
+ diagnosis: {
200
+ coded: string;
201
+ };
202
+ certainty: string;
203
+ rank: number;
204
+ formFieldNamespace?: string;
205
+ formFieldPath?: string;
206
+ uuid?: string;
207
+ encounter?: string;
208
+ }
209
+
210
+ export interface Diagnosis {
211
+ encounter: string;
212
+ patient: string;
213
+ diagnosis: {
214
+ coded: {
215
+ uuid: string;
216
+ };
217
+ };
218
+ certainty: string;
219
+ rank: number;
220
+ display: string;
221
+ voided: boolean;
222
+ uuid: string;
223
+ formFieldNamespace?: string;
224
+ formFieldPath?: string;
225
+ }
@@ -192,6 +192,12 @@ export interface FormQuestionOptions {
192
192
  comment?: string;
193
193
  orientation?: 'vertical' | 'horizontal';
194
194
  shownCommentOptions?: { validators?: Array<Record<string, any>>; hide?: { hideWhenExpression: string } };
195
+ diagnosis?: {
196
+ rank?: number;
197
+ isConfirmed?: boolean;
198
+ conceptClasses?: Array<string>;
199
+ conceptSet?: string;
200
+ };
195
201
  }
196
202
 
197
203
  export interface QuestionAnswerOption {