@awell-health/awell-extensions 2.0.54 → 2.0.56

Sign up to get free protection for your applications and to get access to all the features.
@@ -15,14 +15,19 @@ exports.addIdentifierToPatient = {
15
15
  previewable: false,
16
16
  onEvent: async ({ payload, onComplete, onError, helpers }) => {
17
17
  var _a, _b, _c, _d, _e, _f, _g, _h;
18
- const { fields: { system, value }, } = (0, extensions_core_1.validate)({
18
+ // Validate and extract the `system` and `value` fields and `currentPatientId` from the payload
19
+ const { fields: { system, value }, patient: { id: currentPatientId }, } = (0, extensions_core_1.validate)({
19
20
  schema: zod_1.z.object({
20
21
  fields: config_1.FieldsValidationSchema,
22
+ patient: config_1.PatientValidationSchema,
21
23
  }),
22
24
  payload,
23
25
  });
24
- const currentPatient = payload.patient;
25
26
  const sdk = await helpers.awellSdk();
27
+ /**
28
+ * Check if a patient with the same identifier system and value already exists.
29
+ * This is necessary because identifier system-value pairs must be unique across all patients.
30
+ */
26
31
  const { patientByIdentifier: { patient: existingPatient }, } = await sdk.orchestration.query({
27
32
  patientByIdentifier: {
28
33
  __args: { system, value },
@@ -32,7 +37,11 @@ exports.addIdentifierToPatient = {
32
37
  },
33
38
  });
34
39
  const patientExists = !(0, lodash_1.isEmpty)(existingPatient === null || existingPatient === void 0 ? void 0 : existingPatient.id);
35
- const patientLookUpIsCurrentPatient = (existingPatient === null || existingPatient === void 0 ? void 0 : existingPatient.id) === currentPatient.id;
40
+ const patientLookUpIsCurrentPatient = (existingPatient === null || existingPatient === void 0 ? void 0 : existingPatient.id) === currentPatientId;
41
+ /**
42
+ * If a different patient already has the provided identifier, we cannot assign this identifier
43
+ * to the current patient, as each identifier system-value pair must be unique.
44
+ */
36
45
  if (patientExists && !patientLookUpIsCurrentPatient) {
37
46
  await onError({
38
47
  events: [
@@ -46,11 +55,15 @@ exports.addIdentifierToPatient = {
46
55
  });
47
56
  return;
48
57
  }
49
- // Fetch from the API, had inconsitent results with using patient.payload (e.g. missing identifiers)
58
+ /**
59
+ * Although TypeScript indicates that `payload.patient.profile.identifier` should be accessible within `onEvent`,
60
+ * tests in the Dev environment show that `identifier` data is not reliably available on the extension server.
61
+ * To ensure accurate data, we directly query the API to retrieve the patient's current identifiers.
62
+ */
50
63
  const currentPatientData = await sdk.orchestration.query({
51
64
  patient: {
52
65
  __args: {
53
- id: currentPatient.id,
66
+ id: currentPatientId,
54
67
  },
55
68
  patient: {
56
69
  profile: {
@@ -62,11 +75,14 @@ exports.addIdentifierToPatient = {
62
75
  },
63
76
  },
64
77
  });
65
- // Filter identifiers, excluding any with the current system
78
+ // Retrieve existing identifiers, excluding any with the specified system.
66
79
  const existingIdentifiers = (_d = (_c = (_b = (_a = currentPatientData === null || currentPatientData === void 0 ? void 0 : currentPatientData.patient) === null || _a === void 0 ? void 0 : _a.patient) === null || _b === void 0 ? void 0 : _b.profile) === null || _c === void 0 ? void 0 : _c.identifier) !== null && _d !== void 0 ? _d : [];
67
- const otherIdentifiers = existingIdentifiers.filter((id) => id.system !== system);
80
+ const existingIdentifierExcludingTheOneToUpdate = existingIdentifiers.filter((id) => id.system !== system);
68
81
  const previousIdentifier = existingIdentifiers.find((id) => id.system === system);
69
- const isUpdatingIdentifier = Boolean(previousIdentifier);
82
+ const isUpdatingIdentifier = !(0, lodash_1.isEmpty)(previousIdentifier);
83
+ /**
84
+ * If the patient already has this identifier system with the same value, we skip the update to avoid redundancy.
85
+ */
70
86
  if (isUpdatingIdentifier && (previousIdentifier === null || previousIdentifier === void 0 ? void 0 : previousIdentifier.value) === value) {
71
87
  await onComplete({
72
88
  events: [
@@ -80,13 +96,20 @@ exports.addIdentifierToPatient = {
80
96
  });
81
97
  return;
82
98
  }
83
- const newIdentifiers = [...otherIdentifiers, { system, value }];
84
- // Perform update or add the new identifier
99
+ // Prepare the updated list of identifiers, including the new or updated identifier.
100
+ const newIdentifiers = [
101
+ ...existingIdentifierExcludingTheOneToUpdate,
102
+ { system, value },
103
+ ];
104
+ /**
105
+ * Perform the update to add or update the identifier on the patient's profile.
106
+ * We retrieve the updated identifiers from the API response to ensure we log the final state.
107
+ */
85
108
  const result = await sdk.orchestration.mutation({
86
109
  updatePatient: {
87
110
  __args: {
88
111
  input: {
89
- patient_id: currentPatient.id,
112
+ patient_id: currentPatientId,
90
113
  profile: {
91
114
  identifier: newIdentifiers,
92
115
  },
@@ -104,6 +127,7 @@ exports.addIdentifierToPatient = {
104
127
  },
105
128
  });
106
129
  const updatedIdentifiers = (_h = (_g = (_f = (_e = result === null || result === void 0 ? void 0 : result.updatePatient) === null || _e === void 0 ? void 0 : _e.patient) === null || _f === void 0 ? void 0 : _f.profile) === null || _g === void 0 ? void 0 : _g.identifier) !== null && _h !== void 0 ? _h : [];
130
+ // Log the result, including the old and new lists of identifiers.
107
131
  await onComplete({
108
132
  events: [
109
133
  {
@@ -1 +1 @@
1
- {"version":3,"file":"addIdentifierToPatient.js","sourceRoot":"","sources":["../../../../../../extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"addIdentifierToPatient.js","sourceRoot":"","sources":["../../../../../../extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awell-health/awell-extensions",
3
- "version": "2.0.54",
3
+ "version": "2.0.56",
4
4
  "packageManager": "yarn@3.4.1",
5
5
  "main": "dist/src/index.js",
6
6
  "repository": {