@openmrs/esm-form-engine-lib 4.1.1-pre.2292 → 4.1.1-pre.2296

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.
@@ -0,0 +1,3 @@
1
+ import { type FormFieldValueAdapter } from '../types';
2
+ export declare const PersonAttributeAdapter: FormFieldValueAdapter;
3
+ //# sourceMappingURL=person-attribute-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"person-attribute-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/person-attribute-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,qBAAqB,EAAkC,MAAM,UAAU,CAAC;AAItG,eAAO,MAAM,sBAAsB,EAAE,qBAsCpC,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { clearSubmission } from "../utils/common-utils.js";
2
+ import { isEmpty } from "../validators/form-validator.js";
3
+ export const PersonAttributeAdapter = {
4
+ transformFieldValue: function(field, value, context) {
5
+ clearSubmission(field);
6
+ if (field.meta.initialValue?.refinedValue === value || isEmpty(value)) {
7
+ return null;
8
+ }
9
+ field.meta.submission.newValue = {
10
+ value: value,
11
+ attributeType: field.questionOptions.attributeType,
12
+ uuid: field.meta.initialValue?.omrsObject?.uuid
13
+ };
14
+ return field.meta.submission.newValue;
15
+ },
16
+ getInitialValue: function(field, sourceObject, context) {
17
+ const latestAttribute = context.patient?.extension?.find((ext)=>ext.url === `http://fhir.openmrs.org/ext/person-attribute/${field.questionOptions.attributeType}`);
18
+ field.meta = {
19
+ ...field.meta,
20
+ initialValue: {
21
+ omrsObject: latestAttribute,
22
+ refinedValue: latestAttribute?.valueString || latestAttribute?.valueReference?.reference
23
+ }
24
+ };
25
+ return field.meta.initialValue.refinedValue;
26
+ },
27
+ getPreviousValue: function(field, sourceObject, context) {
28
+ return null;
29
+ },
30
+ getDisplayValue: function(field, value) {
31
+ if (value?.display) {
32
+ return value.display;
33
+ }
34
+ return value;
35
+ },
36
+ tearDown: function() {
37
+ return;
38
+ }
39
+ };
@@ -1,5 +1,5 @@
1
1
  import type { TFunction } from 'i18next';
2
- import type { AttachmentFieldValue, FHIRObsResource, OpenmrsForm, PatientDeathPayload, PatientIdentifier, PatientProgramPayload } from '../types';
2
+ import type { AttachmentFieldValue, FHIRObsResource, OpenmrsForm, PatientDeathPayload, PatientIdentifier, PatientProgramPayload, PersonAttribute } from '../types';
3
3
  export declare function saveEncounter(abortController: AbortController, payload: any, encounterUuid?: string): Promise<import("@openmrs/esm-framework").FetchResponse<any>>;
4
4
  export declare function createAttachment(patientUuid: string, encounterUUID: string, attachment: AttachmentFieldValue): Promise<import("@openmrs/esm-framework").FetchResponse<any>>;
5
5
  export declare function getConcept(conceptUuid: string, v: string): Promise<any>;
@@ -22,5 +22,6 @@ export declare function fetchClobData(form: OpenmrsForm): Promise<any | null>;
22
22
  export declare function getPatientEnrolledPrograms(patientUuid: string): Promise<any>;
23
23
  export declare function saveProgramEnrollment(payload: PatientProgramPayload, abortController: AbortController): Promise<import("@openmrs/esm-framework").FetchResponse<any>>;
24
24
  export declare function savePatientIdentifier(patientIdentifier: PatientIdentifier, patientUuid: string): Promise<import("@openmrs/esm-framework").FetchResponse<any>>;
25
+ export declare function savePersonAttribute(personAttribute: PersonAttribute, patientUuid: string): Promise<import("@openmrs/esm-framework").FetchResponse<any>>;
25
26
  export declare function markPatientAsDeceased(t: TFunction, patientUUID: string, payload: PatientDeathPayload, abortController: AbortController): Promise<import("@openmrs/esm-framework").FetchResponse<any>>;
26
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACtB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,KAAA,EAAE,aAAa,CAAC,EAAE,MAAM,gEAa9F;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,gEAoBlH;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,gBAExD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,gBAE5C;AAED,wBAAgB,eAAe,iBAE9B;AAED,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBASpF;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqBtF;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAc1E;AAGD,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,gBAS7D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,eAAe,gEAarG;AAED,wBAAgB,qBAAqB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gEAgB9F;AAED,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,SAAS,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,EAC5B,eAAe,EAAE,eAAe,gEAmBjC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAGzC,OAAO,KAAK,EACV,oBAAoB,EACpB,eAAe,EACf,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,aAAa,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,KAAA,EAAE,aAAa,CAAC,EAAE,MAAM,gEAa9F;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,oBAAoB,gEAoBlH;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,gBAExD;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,gBAE5C;AAED,wBAAgB,eAAe,iBAE9B;AAED,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,gBASpF;AAED,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,iBAAiB,CAAC,EAAE,MAAM,GACzB,OAAO,CAAC,eAAe,CAAC,CAQ1B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAqBtF;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAc1E;AAGD,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,gBAS7D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,eAAe,gEAarG;AAED,wBAAgB,qBAAqB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gEAgB9F;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gEAgBxF;AAED,wBAAgB,qBAAqB,CACnC,CAAC,EAAE,SAAS,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,mBAAmB,EAC5B,eAAe,EAAE,eAAe,gEAmBjC"}
package/dist/api/index.js CHANGED
@@ -139,6 +139,21 @@ export function savePatientIdentifier(patientIdentifier, patientUuid) {
139
139
  body: JSON.stringify(patientIdentifier)
140
140
  });
141
141
  }
142
+ export function savePersonAttribute(personAttribute, patientUuid) {
143
+ let url;
144
+ if (personAttribute.uuid) {
145
+ url = `${restBaseUrl}/person/${patientUuid}/attribute/${personAttribute.uuid}`;
146
+ } else {
147
+ url = `${restBaseUrl}/person/${patientUuid}/attribute`;
148
+ }
149
+ return openmrsFetch(url, {
150
+ headers: {
151
+ 'Content-Type': 'application/json'
152
+ },
153
+ method: 'POST',
154
+ body: personAttribute
155
+ });
156
+ }
142
157
  export function markPatientAsDeceased(t, patientUUID, payload, abortController) {
143
158
  if (!payload) {
144
159
  throw new Error(t('patientCannotBeMarkedAsDeceasedBecauseNoPayloadSupplied', 'Patient cannot be marked as deceased because no payload is supplied'));
@@ -1 +1 @@
1
- {"version":3,"file":"encounter-form-processor.d.ts","sourceRoot":"","sources":["../../../src/processors/encounter/encounter-form-processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA+B,MAAM,wBAAwB,CAAC;AAY3F,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EAEf,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKlD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMrE,iBAAS,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC;;;;;;;;gCAcnC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;EAe9F;AAiBD,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,iBAAiB,CAAC,MAAM,EAAE,UAAU;IAuC9B,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe;IA4GnF,cAAc;;;IAIR,gBAAgB,CAAC,OAAO,EAAE,yBAAyB;IAsFnD,gBAAgB,CACpB,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAavE,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CA0BhG"}
1
+ {"version":3,"file":"encounter-form-processor.d.ts","sourceRoot":"","sources":["../../../src/processors/encounter/encounter-form-processor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA+B,MAAM,wBAAwB,CAAC;AAc3F,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,yBAAyB,EAC9B,KAAK,UAAU,EAEf,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKlD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAOrE,iBAAS,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,CAAC;;;;;;;;gCAcnC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;EAe9F;AAkBD,qBAAa,sBAAuB,SAAQ,aAAa;IACvD,iBAAiB,CAAC,MAAM,EAAE,UAAU;IAuC9B,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe;IAiInF,cAAc;;;IAIR,gBAAgB,CAAC,OAAO,EAAE,yBAAyB;IAsFnD,gBAAgB,CACpB,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAavE,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;CA0BhG"}
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useState } from "react";
2
2
  import { showSnackbar, translateFrom } from "@openmrs/esm-framework";
3
- import { getMutableSessionProps, hydrateRepeatField, inferInitialValueFromDefaultFieldValue, prepareEncounter, preparePatientIdentifiers, preparePatientPrograms, saveAttachments, savePatientIdentifiers, savePatientPrograms } from "./encounter-processor-helper.js";
3
+ import { getMutableSessionProps, hydrateRepeatField, inferInitialValueFromDefaultFieldValue, prepareEncounter, preparePatientIdentifiers, preparePatientPrograms, preparePersonAttributes, saveAttachments, savePatientIdentifiers, savePatientPrograms, savePersonAttributes } from "./encounter-processor-helper.js";
4
4
  import { evaluateAsyncExpression } from "../../utils/expression-runner.js";
5
5
  import { extractErrorMessagesFromResponse } from "../../utils/error-utils.js";
6
6
  import { extractObsValueAndDisplay } from "../../utils/form-helper.js";
@@ -59,7 +59,8 @@ const contextInitializableTypes = [
59
59
  'encounterLocation',
60
60
  'patientIdentifier',
61
61
  'encounterRole',
62
- 'programState'
62
+ 'programState',
63
+ 'personAttribute'
63
64
  ];
64
65
  export class EncounterFormProcessor extends FormProcessor {
65
66
  prepareFormSchema(schema) {
@@ -118,6 +119,26 @@ export class EncounterFormProcessor extends FormProcessor {
118
119
  isLowContrast: false
119
120
  });
120
121
  }
122
+ // save person attributes
123
+ try {
124
+ const personAttributes = preparePersonAttributes(context.formFields);
125
+ await Promise.all(savePersonAttributes(context.patient, personAttributes));
126
+ if (personAttributes?.length) {
127
+ showSnackbar({
128
+ title: t('personAttributesSaved', 'Person attribute(s) saved successfully'),
129
+ kind: 'success',
130
+ isLowContrast: true
131
+ });
132
+ }
133
+ } catch (error) {
134
+ const errorMessages = extractErrorMessagesFromResponse(error);
135
+ return Promise.reject({
136
+ title: t('errorSavingPersonAttributes', 'Error saving person attributes'),
137
+ description: errorMessages.join(', '),
138
+ kind: 'error',
139
+ critical: true
140
+ });
141
+ }
121
142
  // save patient programs
122
143
  try {
123
144
  const programs = preparePatientPrograms(context.formFields, context.patient, context.customDependencies.patientPrograms);
@@ -1,8 +1,10 @@
1
- import { type FormField, type FormProcessorContextProps, type OpenmrsEncounter, type PatientIdentifier, type PatientProgram, type PatientProgramPayload } from '../../types';
1
+ import { type FormField, type FormProcessorContextProps, type OpenmrsEncounter, type PatientIdentifier, type PatientProgram, type PatientProgramPayload, type PersonAttribute } from '../../types';
2
2
  import { type FormContextProps } from '../../provider/form-provider';
3
3
  export declare function prepareEncounter(context: FormContextProps, encounterDate: Date, encounterRole: string, encounterProvider: string, location: string): OpenmrsEncounter;
4
4
  export declare function preparePatientIdentifiers(fields: FormField[], encounterLocation: string): PatientIdentifier[];
5
5
  export declare function savePatientIdentifiers(patient: fhir.Patient, identifiers: PatientIdentifier[]): Promise<import("@openmrs/esm-framework").FetchResponse<any>>[];
6
+ export declare function preparePersonAttributes(fields: FormField[]): PersonAttribute[];
7
+ export declare function savePersonAttributes(patient: fhir.Patient, attributes: PersonAttribute[]): Promise<import("@openmrs/esm-framework").FetchResponse<any>>[];
6
8
  export declare function preparePatientPrograms(fields: FormField[], patient: fhir.Patient, currentPatientPrograms: Array<PatientProgram>): Array<PatientProgramPayload>;
7
9
  export declare function savePatientPrograms(patientPrograms: PatientProgramPayload[]): Promise<import("@openmrs/esm-framework").FetchResponse<any>[]>;
8
10
  export declare function saveAttachments(fields: FormField[], encounter: OpenmrsEncounter, abortController: AbortController): any[] | Promise<import("@openmrs/esm-framework").FetchResponse<any>[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"encounter-processor-helper.d.ts","sourceRoot":"","sources":["../../../src/processors/encounter/encounter-processor-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAQrE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,IAAI,EACnB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,oBA6DjB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAI7G;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,kEAI7F;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,sBAAsB,EAAE,KAAK,CAAC,cAAc,CAAC,GAC5C,KAAK,CAAC,qBAAqB,CAAC,CA+B9B;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,qBAAqB,EAAE,kEAG3E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,0EAcjH;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB;mBAa5B,MAAM;uBACE,MAAM;mBACd,IAAI;uBACI,MAAM;EAEjD;AA4FD,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,SAAS,OAetE;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC,CAwEtB"}
1
+ {"version":3,"file":"encounter-processor-helper.d.ts","sourceRoot":"","sources":["../../../src/processors/encounter/encounter-processor-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AAKrB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAQrE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,gBAAgB,EACzB,aAAa,EAAE,IAAI,EACnB,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,EACzB,QAAQ,EAAE,MAAM,oBA6DjB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,iBAAiB,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAI7G;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,kEAI7F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAI9E;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,kEAIxF;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,EAAE,EACnB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,sBAAsB,EAAE,KAAK,CAAC,cAAc,CAAC,GAC5C,KAAK,CAAC,qBAAqB,CAAC,CA+B9B;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,qBAAqB,EAAE,kEAG3E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,0EAcjH;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB;mBAa5B,MAAM;uBACE,MAAM;mBACd,IAAI;uBACI,MAAM;EAEjD;AA4FD,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,SAAS,OAetE;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,SAAS,EAAE,CAAC,CAwEtB"}
@@ -1,4 +1,4 @@
1
- import { createAttachment, savePatientIdentifier, saveProgramEnrollment } from "../../api/index.js";
1
+ import { createAttachment, savePatientIdentifier, savePersonAttribute, saveProgramEnrollment } from "../../api/index.js";
2
2
  import { hasRendering, hasSubmission } from "../../utils/common-utils.js";
3
3
  import dayjs from "dayjs";
4
4
  import { assignedObsIds, constructObs, voidObs } from "../../adapters/obs-adapter.js";
@@ -74,6 +74,14 @@ export function savePatientIdentifiers(patient, identifiers) {
74
74
  return savePatientIdentifier(patientIdentifier, patient.id);
75
75
  });
76
76
  }
77
+ export function preparePersonAttributes(fields) {
78
+ return fields.filter((field)=>field.type === 'personAttribute' && hasSubmission(field)).map((field)=>field.meta.submission.newValue);
79
+ }
80
+ export function savePersonAttributes(patient, attributes) {
81
+ return attributes.map((personAttribute)=>{
82
+ return savePersonAttribute(personAttribute, patient.id);
83
+ });
84
+ }
77
85
  export function preparePatientPrograms(fields, patient, currentPatientPrograms) {
78
86
  const programStateFields = fields.filter((field)=>field.type === 'programState' && hasSubmission(field));
79
87
  const programMap = new Map();
@@ -1 +1 @@
1
- {"version":3,"file":"inbuiltFieldValueAdapters.d.ts","sourceRoot":"","sources":["../../../src/registry/inbuilt-components/inbuiltFieldValueAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAa1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,qBAAqB,CAAC,EAqD1E,CAAC"}
1
+ {"version":3,"file":"inbuiltFieldValueAdapters.d.ts","sourceRoot":"","sources":["../../../src/registry/inbuilt-components/inbuiltFieldValueAdapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAc1C,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,eAAO,MAAM,yBAAyB,EAAE,YAAY,CAAC,qBAAqB,CAAC,EAyD1E,CAAC"}
@@ -8,6 +8,7 @@ import { ObsAdapter } from "../../adapters/obs-adapter.js";
8
8
  import { ObsCommentAdapter } from "../../adapters/obs-comment-adapter.js";
9
9
  import { OrdersAdapter } from "../../adapters/orders-adapter.js";
10
10
  import { PatientIdentifierAdapter } from "../../adapters/patient-identifier-adapter.js";
11
+ import { PersonAttributeAdapter } from "../../adapters/person-attribute-adapter.js";
11
12
  import { ProgramStateAdapter } from "../../adapters/program-state-adapter.js";
12
13
  import { EncounterDiagnosisAdapter } from "../../adapters/encounter-diagnosis-adapter.js";
13
14
  export const inbuiltFieldValueAdapters = [
@@ -59,6 +60,10 @@ export const inbuiltFieldValueAdapters = [
59
60
  type: 'patientIdentifier',
60
61
  component: PatientIdentifierAdapter
61
62
  },
63
+ {
64
+ type: 'personAttribute',
65
+ component: PersonAttributeAdapter
66
+ },
62
67
  {
63
68
  type: 'diagnosis',
64
69
  component: EncounterDiagnosisAdapter
@@ -182,6 +182,11 @@ export interface PatientIdentifier {
182
182
  location?: string;
183
183
  preferred?: boolean;
184
184
  }
185
+ export interface PersonAttribute {
186
+ uuid?: string;
187
+ value: string;
188
+ attributeType: string;
189
+ }
185
190
  export interface DiagnosisPayload {
186
191
  patient: string;
187
192
  condition: null;
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"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"}
@@ -199,6 +199,7 @@ export interface FormQuestionOptions {
199
199
  workspaceProps?: Record<string, any>;
200
200
  buttonLabel?: string;
201
201
  identifierType?: string;
202
+ attributeType?: string;
202
203
  orderSettingUuid?: string;
203
204
  orderType?: string;
204
205
  selectableOrders?: Array<Record<any, any>>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/types/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/types/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-form-engine-lib",
3
- "version": "4.1.1-pre.2292",
3
+ "version": "4.1.1-pre.2296",
4
4
  "description": "React Form Engine for O3",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -0,0 +1,45 @@
1
+ import { type OpenmrsResource } from '@openmrs/esm-framework';
2
+ import { type FormContextProps } from '../provider/form-provider';
3
+ import { type FormField, type FormFieldValueAdapter, type FormProcessorContextProps } from '../types';
4
+ import { clearSubmission } from '../utils/common-utils';
5
+ import { isEmpty } from '../validators/form-validator';
6
+
7
+ export const PersonAttributeAdapter: FormFieldValueAdapter = {
8
+ transformFieldValue: function (field: FormField, value: any, context: FormContextProps) {
9
+ clearSubmission(field);
10
+ if (field.meta.initialValue?.refinedValue === value || isEmpty(value)) {
11
+ return null;
12
+ }
13
+ field.meta.submission.newValue = {
14
+ value: value,
15
+ attributeType: field.questionOptions.attributeType,
16
+ uuid: (field.meta.initialValue?.omrsObject as OpenmrsResource)?.uuid,
17
+ };
18
+ return field.meta.submission.newValue;
19
+ },
20
+ getInitialValue: function (field: FormField, sourceObject: OpenmrsResource, context: FormProcessorContextProps) {
21
+ const latestAttribute = context.patient?.extension?.find(
22
+ (ext) => ext.url === `http://fhir.openmrs.org/ext/person-attribute/${field.questionOptions.attributeType}`,
23
+ );
24
+ field.meta = {
25
+ ...field.meta,
26
+ initialValue: {
27
+ omrsObject: latestAttribute as unknown as OpenmrsResource,
28
+ refinedValue: latestAttribute?.valueString || latestAttribute?.valueReference?.reference,
29
+ },
30
+ };
31
+ return field.meta.initialValue.refinedValue;
32
+ },
33
+ getPreviousValue: function (field: FormField, sourceObject: OpenmrsResource, context: FormProcessorContextProps) {
34
+ return null;
35
+ },
36
+ getDisplayValue: function (field: FormField, value: any) {
37
+ if (value?.display) {
38
+ return value.display;
39
+ }
40
+ return value;
41
+ },
42
+ tearDown: function (): void {
43
+ return;
44
+ },
45
+ };
package/src/api/index.ts CHANGED
@@ -8,6 +8,7 @@ import type {
8
8
  PatientDeathPayload,
9
9
  PatientIdentifier,
10
10
  PatientProgramPayload,
11
+ PersonAttribute,
11
12
  } from '../types';
12
13
  import { isUuid } from '../utils/boolean-utils';
13
14
 
@@ -179,6 +180,24 @@ export function savePatientIdentifier(patientIdentifier: PatientIdentifier, pati
179
180
  });
180
181
  }
181
182
 
183
+ export function savePersonAttribute(personAttribute: PersonAttribute, patientUuid: string) {
184
+ let url: string;
185
+
186
+ if (personAttribute.uuid) {
187
+ url = `${restBaseUrl}/person/${patientUuid}/attribute/${personAttribute.uuid}`;
188
+ } else {
189
+ url = `${restBaseUrl}/person/${patientUuid}/attribute`;
190
+ }
191
+
192
+ return openmrsFetch(url, {
193
+ headers: {
194
+ 'Content-Type': 'application/json',
195
+ },
196
+ method: 'POST',
197
+ body: personAttribute,
198
+ });
199
+ }
200
+
182
201
  export function markPatientAsDeceased(
183
202
  t: TFunction,
184
203
  patientUUID: string,
@@ -7,9 +7,11 @@ import {
7
7
  prepareEncounter,
8
8
  preparePatientIdentifiers,
9
9
  preparePatientPrograms,
10
+ preparePersonAttributes,
10
11
  saveAttachments,
11
12
  savePatientIdentifiers,
12
13
  savePatientPrograms,
14
+ savePersonAttributes,
13
15
  } from './encounter-processor-helper';
14
16
  import {
15
17
  type FormField,
@@ -33,6 +35,7 @@ import { useEncounterRole } from '../../hooks/useEncounterRole';
33
35
  import { usePatientPrograms } from '../../hooks/usePatientPrograms';
34
36
  import { type TOptions } from 'i18next';
35
37
 
38
+
36
39
  function useCustomHooks(context: Partial<FormProcessorContextProps>) {
37
40
  const [isLoading, setIsLoading] = useState(true);
38
41
  const { encounter, isLoading: isLoadingEncounter } = useEncounter(context.formJson);
@@ -77,6 +80,7 @@ const contextInitializableTypes = [
77
80
  'patientIdentifier',
78
81
  'encounterRole',
79
82
  'programState',
83
+ 'personAttribute',
80
84
  ];
81
85
 
82
86
  export class EncounterFormProcessor extends FormProcessor {
@@ -146,6 +150,27 @@ export class EncounterFormProcessor extends FormProcessor {
146
150
  });
147
151
  }
148
152
 
153
+ // save person attributes
154
+ try {
155
+ const personAttributes = preparePersonAttributes(context.formFields);
156
+ await Promise.all(savePersonAttributes(context.patient, personAttributes));
157
+ if (personAttributes?.length) {
158
+ showSnackbar({
159
+ title: t('personAttributesSaved', 'Person attribute(s) saved successfully'),
160
+ kind: 'success',
161
+ isLowContrast: true,
162
+ });
163
+ }
164
+ } catch (error) {
165
+ const errorMessages = extractErrorMessagesFromResponse(error);
166
+ return Promise.reject({
167
+ title: t('errorSavingPersonAttributes', 'Error saving person attributes'),
168
+ description: errorMessages.join(', '),
169
+ kind: 'error',
170
+ critical: true,
171
+ });
172
+ }
173
+
149
174
  // save patient programs
150
175
  try {
151
176
  const programs = preparePatientPrograms(
@@ -7,8 +7,9 @@ import {
7
7
  type PatientIdentifier,
8
8
  type PatientProgram,
9
9
  type PatientProgramPayload,
10
+ type PersonAttribute,
10
11
  } from '../../types';
11
- import { createAttachment, savePatientIdentifier, saveProgramEnrollment } from '../../api';
12
+ import { createAttachment, savePatientIdentifier, savePersonAttribute, saveProgramEnrollment } from '../../api';
12
13
  import { hasRendering, hasSubmission } from '../../utils/common-utils';
13
14
  import dayjs from 'dayjs';
14
15
  import { assignedObsIds, constructObs, voidObs } from '../../adapters/obs-adapter';
@@ -100,6 +101,18 @@ export function savePatientIdentifiers(patient: fhir.Patient, identifiers: Patie
100
101
  });
101
102
  }
102
103
 
104
+ export function preparePersonAttributes(fields: FormField[]): PersonAttribute[] {
105
+ return fields
106
+ .filter((field) => field.type === 'personAttribute' && hasSubmission(field))
107
+ .map((field) => field.meta.submission.newValue);
108
+ }
109
+
110
+ export function savePersonAttributes(patient: fhir.Patient, attributes: PersonAttribute[]) {
111
+ return attributes.map((personAttribute) => {
112
+ return savePersonAttribute(personAttribute, patient.id);
113
+ });
114
+ }
115
+
103
116
  export function preparePatientPrograms(
104
117
  fields: FormField[],
105
118
  patient: fhir.Patient,
@@ -9,6 +9,7 @@ import { ObsAdapter } from '../../adapters/obs-adapter';
9
9
  import { ObsCommentAdapter } from '../../adapters/obs-comment-adapter';
10
10
  import { OrdersAdapter } from '../../adapters/orders-adapter';
11
11
  import { PatientIdentifierAdapter } from '../../adapters/patient-identifier-adapter';
12
+ import { PersonAttributeAdapter } from '../../adapters/person-attribute-adapter';
12
13
  import { ProgramStateAdapter } from '../../adapters/program-state-adapter';
13
14
  import { EncounterDiagnosisAdapter } from '../../adapters/encounter-diagnosis-adapter';
14
15
  import { type FormFieldValueAdapter } from '../../types';
@@ -62,6 +63,10 @@ export const inbuiltFieldValueAdapters: RegistryItem<FormFieldValueAdapter>[] =
62
63
  type: 'patientIdentifier',
63
64
  component: PatientIdentifierAdapter,
64
65
  },
66
+ {
67
+ type: 'personAttribute',
68
+ component: PersonAttributeAdapter,
69
+ },
65
70
  {
66
71
  type: 'diagnosis',
67
72
  component: EncounterDiagnosisAdapter,
@@ -199,6 +199,12 @@ export interface PatientIdentifier {
199
199
  preferred?: boolean;
200
200
  }
201
201
 
202
+ export interface PersonAttribute {
203
+ uuid?: string;
204
+ value: string;
205
+ attributeType: string;
206
+ }
207
+
202
208
  export interface DiagnosisPayload {
203
209
  patient: string;
204
210
  condition: null;
@@ -191,6 +191,7 @@ export interface FormQuestionOptions {
191
191
  workspaceProps?: Record<string, any>;
192
192
  buttonLabel?: string;
193
193
  identifierType?: string;
194
+ attributeType?: string;
194
195
  orderSettingUuid?: string;
195
196
  orderType?: string;
196
197
  selectableOrders?: Array<Record<any, any>>;