@awell-health/awell-extensions 2.0.130 → 2.0.131

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,7 +11,7 @@ const addEventLog_1 = require("../../../../src/lib/awell/addEventLog");
11
11
  exports.updatePatientTags = {
12
12
  key: 'updatePatientTags',
13
13
  category: extensions_core_1.Category.EHR_INTEGRATIONS,
14
- title: 'Update patient tags',
14
+ title: '🪄 Update patient tags',
15
15
  description: 'Update patient tags in Elation.',
16
16
  fields: config_1.fields,
17
17
  previewable: false,
@@ -35,19 +35,18 @@ exports.updatePatientTags = {
35
35
  });
36
36
  return;
37
37
  }
38
- try {
39
- const { tags } = await api.getPatient(patientId);
40
- const existingTags = tags !== null && tags !== void 0 ? tags : [];
41
- const ChatModelGPT4o = new openai_1.ChatOpenAI({
42
- modelName: 'gpt-4o',
43
- openAIApiKey: openAiApiKey,
44
- temperature: 0,
45
- maxRetries: 3,
46
- timeout: 10000,
47
- });
48
- const systemPrompt = `You are a helpful assistant. You will receive a list of patient tags and an instruction in natural language about which tags to add, update, or remove. Your output should always be the updated list of tags (as an array). An empty array is also a valid output.
49
-
50
- Important Instructions:
38
+ const { tags } = await api.getPatient(patientId);
39
+ const existingTags = tags !== null && tags !== void 0 ? tags : [];
40
+ const ChatModelGPT4o = new openai_1.ChatOpenAI({
41
+ modelName: 'gpt-4o-2024-08-06',
42
+ openAIApiKey: openAiApiKey,
43
+ temperature: 0,
44
+ maxRetries: 3,
45
+ timeout: 10000,
46
+ });
47
+ const systemPrompt = `You are a clinical data manager. You will receive a list (array) of patient tags for a single patient and instructions about which tags to add, update, or remove. These tags are used to assign particular attributes to patients which can help with patient care, like grouping of patients, categorizing patients for reporting, or identifying patients for care.
48
+
49
+ Important instructions:
51
50
  - The maximum number of tags is 10.
52
51
  - The max length of a single tag is 100 characters.
53
52
  - Ensure tags are unique.
@@ -56,43 +55,45 @@ Input array: ${JSON.stringify(existingTags)}
56
55
  Instruction: ${prompt}
57
56
 
58
57
  Output a JSON object with two keys:
59
- 1. updatedTags: The updated array of tags
58
+ 1. updatedTags: The updated array of tags. If the input array is empty, the output should be an empty array.
60
59
  2. explanation: A readable explanation of the changes made to the tags and why`;
61
- const parser = output_parsers_1.StructuredOutputParser.fromZodSchema(zod_1.z.object({
62
- updatedTags: zod_1.z.array(zod_1.z.string()),
63
- explanation: zod_1.z.string(),
64
- }));
60
+ const SingleTagSchema = zod_1.z.string().max(100).describe('A single tag');
61
+ const TagsSchema = zod_1.z
62
+ .array(SingleTagSchema)
63
+ .max(10)
64
+ .refine((items) => new Set(items).size === items.length, {
65
+ message: 'All items must be unique, no duplicate values allowed',
66
+ })
67
+ .describe('The updated array of tags');
68
+ const parser = output_parsers_1.StructuredOutputParser.fromZodSchema(zod_1.z.object({
69
+ updatedTags: TagsSchema,
70
+ explanation: zod_1.z
71
+ .string()
72
+ .describe('A readable explanation of the changes made to the tags and why'),
73
+ }));
74
+ let result;
75
+ try {
65
76
  const chain = ChatModelGPT4o.pipe(parser);
66
- const result = await chain.invoke(systemPrompt);
67
- await api.updatePatient(patientId, {
68
- tags: result.updatedTags,
69
- });
70
- await onComplete({
71
- data_points: {
72
- updatedTags: result.updatedTags.join(', '),
73
- },
74
- events: [
75
- (0, addEventLog_1.addActivityEventLog)({
76
- message: `Previous patient tags: ${(existingTags === null || existingTags === void 0 ? void 0 : existingTags.length) > 0 ? existingTags === null || existingTags === void 0 ? void 0 : existingTags.join(', ') : 'No tags'}\nUpdated patient tags: ${result.updatedTags.join(', ')}\nExplanation: ${result.explanation}`,
77
- }),
78
- ],
79
- });
77
+ result = await chain.invoke(systemPrompt);
80
78
  }
81
- catch (error) {
82
- console.error(error);
83
- await onError({
84
- events: [
85
- {
86
- date: new Date().toISOString(),
87
- text: { en: 'Unable to update patient tags' },
88
- error: {
89
- category: 'SERVER_ERROR',
90
- message: 'Unable to update patient tags',
91
- },
92
- },
93
- ],
94
- });
79
+ catch (invokeError) {
80
+ console.error('Error invoking ChatModelGPT4o for updatePatientTags:', invokeError);
81
+ throw new Error('Failed to update patient tags.');
95
82
  }
83
+ const validatedTags = TagsSchema.parse(result.updatedTags);
84
+ await api.updatePatient(patientId, {
85
+ tags: validatedTags,
86
+ });
87
+ await onComplete({
88
+ data_points: {
89
+ updatedTags: validatedTags.join(', '),
90
+ },
91
+ events: [
92
+ (0, addEventLog_1.addActivityEventLog)({
93
+ message: `Previous patient tags: ${(existingTags === null || existingTags === void 0 ? void 0 : existingTags.length) > 0 ? existingTags === null || existingTags === void 0 ? void 0 : existingTags.join(', ') : 'No tags'}\nUpdated patient tags: ${validatedTags.join(', ')}\nExplanation: ${result.explanation}`,
94
+ }),
95
+ ],
96
+ });
96
97
  },
97
98
  };
98
99
  //# sourceMappingURL=updatePatientTags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"updatePatientTags.js","sourceRoot":"","sources":["../../../../../extensions/elation/actions/updatePatientTags/updatePatientTags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"updatePatientTags.js","sourceRoot":"","sources":["../../../../../extensions/elation/actions/updatePatientTags/updatePatientTags.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.130",
3
+ "version": "2.0.131",
4
4
  "packageManager": "yarn@4.5.3",
5
5
  "main": "dist/src/index.js",
6
6
  "repository": {