@awell-health/awell-extensions 1.0.244 → 1.1.0-beta11

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 (130) hide show
  1. package/dist/extensions/athenahealth/actions/index.d.ts +5 -5
  2. package/dist/extensions/avaAi/common/sdk/openAiSdk.d.ts +2 -0
  3. package/dist/extensions/avaAi/common/sdk/openAiSdk.js +5 -0
  4. package/dist/extensions/avaAi/common/sdk/openAiSdk.js.map +1 -0
  5. package/dist/extensions/avaAi/index.d.ts +2 -0
  6. package/dist/extensions/avaAi/index.js +21 -0
  7. package/dist/extensions/avaAi/index.js.map +1 -0
  8. package/dist/extensions/avaAi/settings.d.ts +18 -0
  9. package/dist/extensions/avaAi/settings.js +22 -0
  10. package/dist/extensions/avaAi/settings.js.map +1 -0
  11. package/dist/extensions/{awell/v1/actions/getPatientByIdentifier → avaAi/v1/actions/generatePatientSummary}/config/dataPoints.d.ts +3 -3
  12. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/dataPoints.js +15 -0
  13. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/dataPoints.js.map +1 -0
  14. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/fields.d.ts +29 -0
  15. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/fields.js +46 -0
  16. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/fields.js.map +1 -0
  17. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/index.d.ts +2 -0
  18. package/dist/extensions/{awell/v1/actions/getPatientByIdentifier → avaAi/v1/actions/generatePatientSummary}/config/index.js +2 -2
  19. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/index.js.map +1 -0
  20. package/dist/extensions/{awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.d.ts → avaAi/v1/actions/generatePatientSummary/generatePatientSummary.d.ts} +2 -2
  21. package/dist/extensions/{awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.js → avaAi/v1/actions/generatePatientSummary/generatePatientSummary.js} +31 -33
  22. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.js.map +1 -0
  23. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.test.js +27 -0
  24. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.test.js.map +1 -0
  25. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/index.d.ts +1 -0
  26. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/index.js +6 -0
  27. package/dist/extensions/{awell/v1/actions/addIdentifierToPatient → avaAi/v1/actions/generatePatientSummary}/index.js.map +1 -1
  28. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.d.ts +3 -0
  29. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.js +43 -0
  30. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.js.map +1 -0
  31. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.test.js +133 -0
  32. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.test.js.map +1 -0
  33. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/index.d.ts +1 -0
  34. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/index.js +6 -0
  35. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/index.js.map +1 -0
  36. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/index.d.ts +1 -0
  37. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/index.js +6 -0
  38. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/index.js.map +1 -0
  39. package/dist/extensions/avaAi/v1/actions/index.d.ts +1 -0
  40. package/dist/extensions/avaAi/v1/actions/index.js +6 -0
  41. package/dist/extensions/avaAi/v1/actions/index.js.map +1 -0
  42. package/dist/extensions/awell/index.js +0 -2
  43. package/dist/extensions/awell/index.js.map +1 -1
  44. package/dist/extensions/awell/v1/actions/index.d.ts +0 -2
  45. package/dist/extensions/awell/v1/actions/index.js +1 -5
  46. package/dist/extensions/awell/v1/actions/index.js.map +1 -1
  47. package/dist/extensions/awell/v1/actions/searchPatientsByPatientCode/searchPatientsByPatientCode.js +1 -1
  48. package/dist/extensions/awell/v1/actions/searchPatientsByPatientCode/searchPatientsByPatientCode.js.map +1 -1
  49. package/dist/extensions/awell/v1/actions/searchPatientsByPatientCode/searchPatientsByPatientCode.test.js.map +1 -1
  50. package/dist/extensions/awell/v1/gql/fragment-masking.d.ts +13 -0
  51. package/dist/extensions/awell/v1/gql/fragment-masking.js +12 -0
  52. package/dist/extensions/awell/v1/gql/fragment-masking.js.map +1 -0
  53. package/dist/extensions/awell/v1/gql/gql.d.ts +36 -0
  54. package/dist/extensions/awell/v1/gql/gql.js +47 -0
  55. package/dist/extensions/awell/v1/gql/gql.js.map +1 -0
  56. package/dist/extensions/awell/v1/gql/graphql.d.ts +525 -1066
  57. package/dist/extensions/awell/v1/gql/graphql.js +17 -46
  58. package/dist/extensions/awell/v1/gql/graphql.js.map +1 -1
  59. package/dist/extensions/awell/v1/gql/index.d.ts +2 -0
  60. package/dist/extensions/awell/v1/gql/index.js +19 -0
  61. package/dist/extensions/awell/v1/gql/index.js.map +1 -0
  62. package/dist/extensions/awell/v1/sdk/awellSdk.d.ts +1 -6
  63. package/dist/extensions/awell/v1/sdk/awellSdk.js +0 -11
  64. package/dist/extensions/awell/v1/sdk/awellSdk.js.map +1 -1
  65. package/dist/extensions/awell/v1/sdk/graphql/index.d.ts +0 -2
  66. package/dist/extensions/awell/v1/sdk/graphql/index.js +1 -5
  67. package/dist/extensions/awell/v1/sdk/graphql/index.js.map +1 -1
  68. package/dist/extensions/canvasMedical/v1/actions/createClaim/config/fields.d.ts +2 -2
  69. package/dist/extensions/canvasMedical/v1/validation/patient.zod.d.ts +44 -44
  70. package/dist/extensions/elation/actions/index.d.ts +12 -12
  71. package/dist/extensions/experimental/index.js +2 -0
  72. package/dist/extensions/experimental/index.js.map +1 -1
  73. package/dist/extensions/experimental/schemas.d.ts +2 -0
  74. package/dist/extensions/experimental/schemas.js +44 -0
  75. package/dist/extensions/experimental/schemas.js.map +1 -0
  76. package/dist/extensions/experimental/v1/actions/returnObject/index.d.ts +5 -1
  77. package/dist/extensions/experimental/v1/actions/returnObject/index.js +13 -2
  78. package/dist/extensions/experimental/v1/actions/returnObject/index.js.map +1 -1
  79. package/dist/extensions/healthie/actions/index.d.ts +23 -23
  80. package/dist/extensions/icd/actions/index.d.ts +1 -1
  81. package/dist/extensions/index.d.ts +1 -1
  82. package/dist/extensions/index.js +9 -2
  83. package/dist/extensions/index.js.map +1 -1
  84. package/dist/extensions/markdown.json +6 -2
  85. package/dist/extensions/metriport/actions/index.d.ts +7 -7
  86. package/dist/extensions/talkDesk/actions/index.d.ts +1 -1
  87. package/dist/extensions/textline/actions/index.d.ts +3 -3
  88. package/dist/extensions/wellinks-public/actions/index.d.ts +9 -9
  89. package/dist/extensions/westFax/actions/index.d.ts +1 -1
  90. package/package.json +4 -3
  91. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.js +0 -74
  92. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.js.map +0 -1
  93. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.test.js +0 -36
  94. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.test.js.map +0 -1
  95. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/dataPoints.d.ts +0 -1
  96. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/dataPoints.js +0 -5
  97. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/dataPoints.js.map +0 -1
  98. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/fields.d.ts +0 -28
  99. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/fields.js +0 -26
  100. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/fields.js.map +0 -1
  101. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/index.d.ts +0 -3
  102. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/index.js +0 -11
  103. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/index.js.map +0 -1
  104. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/patient.d.ts +0 -8
  105. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/patient.js +0 -6
  106. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/patient.js.map +0 -1
  107. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/index.d.ts +0 -1
  108. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/index.js +0 -6
  109. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/dataPoints.js +0 -14
  110. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/dataPoints.js.map +0 -1
  111. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/fields.d.ts +0 -28
  112. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/fields.js +0 -26
  113. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/fields.js.map +0 -1
  114. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/index.d.ts +0 -2
  115. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/index.js.map +0 -1
  116. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.d.ts +0 -4
  117. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.js.map +0 -1
  118. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.test.js +0 -43
  119. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.test.js.map +0 -1
  120. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/index.d.ts +0 -1
  121. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/index.js +0 -6
  122. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/index.js.map +0 -1
  123. package/dist/extensions/awell/v1/sdk/graphql/addIdentifier.mutation.d.ts +0 -1
  124. package/dist/extensions/awell/v1/sdk/graphql/addIdentifier.mutation.js +0 -15
  125. package/dist/extensions/awell/v1/sdk/graphql/addIdentifier.mutation.js.map +0 -1
  126. package/dist/extensions/awell/v1/sdk/graphql/getPatientByIdentifier.query.d.ts +0 -1
  127. package/dist/extensions/awell/v1/sdk/graphql/getPatientByIdentifier.query.js +0 -37
  128. package/dist/extensions/awell/v1/sdk/graphql/getPatientByIdentifier.query.js.map +0 -1
  129. /package/dist/extensions/{awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.test.d.ts → avaAi/v1/actions/generatePatientSummary/generatePatientSummary.test.d.ts} +0 -0
  130. /package/dist/extensions/{awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.test.d.ts → avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.test.d.ts} +0 -0
@@ -50,7 +50,7 @@ declare const actions: {
50
50
  required: true;
51
51
  description: string;
52
52
  };
53
- }, "email" | "firstName" | "lastName" | "dob", never>;
53
+ }, "email" | "firstName" | "lastName" | "dob">;
54
54
  getAppointment: import("@awell-health/extensions-core").Action<{
55
55
  appointmentId: {
56
56
  id: string;
@@ -102,7 +102,7 @@ declare const actions: {
102
102
  required: true;
103
103
  description: string;
104
104
  };
105
- }, "startTime" | "status" | "date" | "duration" | "patientId" | "appointmentTypeId" | "appointmentTypeName", never>;
105
+ }, "startTime" | "status" | "date" | "duration" | "patientId" | "appointmentTypeId" | "appointmentTypeName">;
106
106
  createPatient: import("@awell-health/extensions-core").Action<{
107
107
  departmentid: {
108
108
  id: string;
@@ -182,7 +182,7 @@ declare const actions: {
182
182
  required: true;
183
183
  description: string;
184
184
  };
185
- }, "createdPatientId", never>;
185
+ }, "createdPatientId">;
186
186
  createAppointmentNote: import("@awell-health/extensions-core").Action<{
187
187
  appointmentid: {
188
188
  id: string;
@@ -248,7 +248,7 @@ declare const actions: {
248
248
  required: true;
249
249
  description: string;
250
250
  };
251
- }, never, never>;
251
+ }, never>;
252
252
  addClinicalDocument: import("@awell-health/extensions-core").Action<{
253
253
  departmentid: {
254
254
  id: string;
@@ -314,6 +314,6 @@ declare const actions: {
314
314
  required: true;
315
315
  description: string;
316
316
  };
317
- }, "clinicalDocumentId", never>;
317
+ }, "clinicalDocumentId">;
318
318
  };
319
319
  export default actions;
@@ -0,0 +1,2 @@
1
+ import { OpenAIApi as OpenAiSdk } from 'openai';
2
+ export default OpenAiSdk;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const openai_1 = require("openai");
4
+ exports.default = openai_1.OpenAIApi;
5
+ //# sourceMappingURL=openAiSdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openAiSdk.js","sourceRoot":"","sources":["../../../../../extensions/avaAi/common/sdk/openAiSdk.ts"],"names":[],"mappings":";;AAAA,mCAA+C;AAE/C,kBAAe,kBAAS,CAAA"}
@@ -0,0 +1,2 @@
1
+ import { type Extension } from '@awell-health/extensions-core';
2
+ export declare const AvaAi: Extension;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AvaAi = void 0;
4
+ const extensions_core_1 = require("@awell-health/extensions-core");
5
+ const actions_1 = require("./v1/actions");
6
+ const settings_1 = require("./settings");
7
+ exports.AvaAi = {
8
+ key: 'avaAi',
9
+ title: 'Ava - Awell Virtual (AI) Assistant',
10
+ icon_url: 'https://res.cloudinary.com/da7x4rzl4/image/upload/v1681032937/Awell%20Extensions/Avatar.png',
11
+ description: `Ava is "Awell's Virtual (AI) Assistant that can help you automate simple tasks in your care flow.`,
12
+ category: extensions_core_1.Category.AI,
13
+ author: {
14
+ authorType: extensions_core_1.AuthorType.AWELL,
15
+ },
16
+ actions: {
17
+ generatePatientSummary: actions_1.generatePatientSummary,
18
+ },
19
+ settings: settings_1.settings,
20
+ };
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/avaAi/index.ts"],"names":[],"mappings":";;;AACA,mEAAoE;AACpE,0CAAqD;AACrD,yCAAqC;AAExB,QAAA,KAAK,GAAc;IAC9B,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,oCAAoC;IAC3C,QAAQ,EACN,6FAA6F;IAC/F,WAAW,EAAE,mGAAmG;IAChH,QAAQ,EAAE,0BAAQ,CAAC,EAAE;IACrB,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,OAAO,EAAE;QACP,sBAAsB,EAAtB,gCAAsB;KACvB;IACD,QAAQ,EAAR,mBAAQ;CACT,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+ export declare const settings: {
3
+ openAiApiKey: {
4
+ key: string;
5
+ label: string;
6
+ obfuscated: true;
7
+ required: true;
8
+ description: string;
9
+ };
10
+ };
11
+ export declare const SettingsValidationSchema: z.ZodObject<{
12
+ openAiApiKey: z.ZodString;
13
+ }, "strip", z.ZodTypeAny, {
14
+ openAiApiKey: string;
15
+ }, {
16
+ openAiApiKey: string;
17
+ }>;
18
+ export declare const validateSettings: (settings: unknown) => z.infer<typeof SettingsValidationSchema>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateSettings = exports.SettingsValidationSchema = exports.settings = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.settings = {
6
+ openAiApiKey: {
7
+ key: 'openAiApiKey',
8
+ label: 'Open AI API Key',
9
+ obfuscated: true,
10
+ required: true,
11
+ description: 'The OpenAI API uses API keys for authentication',
12
+ },
13
+ };
14
+ exports.SettingsValidationSchema = zod_1.z.object({
15
+ openAiApiKey: zod_1.z.string(),
16
+ });
17
+ const validateSettings = (settings) => {
18
+ const parsedData = exports.SettingsValidationSchema.parse(settings);
19
+ return parsedData;
20
+ };
21
+ exports.validateSettings = validateSettings;
22
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../extensions/avaAi/settings.ts"],"names":[],"mappings":";;;AACA,6BAAwC;AAE3B,QAAA,QAAQ,GAAG;IACtB,YAAY,EAAE;QACZ,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,iBAAiB;QACxB,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,iDAAiD;KAC/D;CACgC,CAAA;AAEtB,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE;CAC2B,CAAC,CAAA;AAE/C,MAAM,gBAAgB,GAAG,CAC9B,QAAiB,EACyB,EAAE;IAC5C,MAAM,UAAU,GAAG,gCAAwB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAE3D,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AANY,QAAA,gBAAgB,oBAM5B"}
@@ -1,9 +1,9 @@
1
1
  export declare const dataPoints: {
2
- patientAlreadyExists: {
2
+ prompt: {
3
3
  key: string;
4
- valueType: "boolean";
4
+ valueType: "string";
5
5
  };
6
- patientId: {
6
+ patientSummary: {
7
7
  key: string;
8
8
  valueType: "string";
9
9
  };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dataPoints = void 0;
4
+ exports.dataPoints = {
5
+ prompt: {
6
+ // Comes in handy for debugging purposes - should be removed at some point
7
+ key: 'prompt',
8
+ valueType: 'string',
9
+ },
10
+ patientSummary: {
11
+ key: 'patientSummary',
12
+ valueType: 'string',
13
+ },
14
+ };
15
+ //# sourceMappingURL=dataPoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataPoints.js","sourceRoot":"","sources":["../../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/config/dataPoints.ts"],"names":[],"mappings":";;;AAEa,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE;QACN,0EAA0E;QAC1E,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,QAAQ;KACpB;IACD,cAAc,EAAE;QACd,GAAG,EAAE,gBAAgB;QACrB,SAAS,EAAE,QAAQ;KACpB;CAC4C,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { FieldType } from '@awell-health/extensions-core';
2
+ import { z } from 'zod';
3
+ export declare const fields: {
4
+ characteristics: {
5
+ id: string;
6
+ label: string;
7
+ description: string;
8
+ type: FieldType.STRING;
9
+ required: false;
10
+ };
11
+ language: {
12
+ id: string;
13
+ label: string;
14
+ description: string;
15
+ type: FieldType.STRING;
16
+ required: false;
17
+ };
18
+ };
19
+ export declare const FieldsValidationSchema: z.ZodObject<{
20
+ characteristics: z.ZodOptional<z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string[], string>, string[], string>>;
21
+ language: z.ZodEffects<z.ZodOptional<z.ZodString>, string, string | undefined>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ language: string;
24
+ characteristics?: string[] | undefined;
25
+ }, {
26
+ language?: string | undefined;
27
+ characteristics?: string | undefined;
28
+ }>;
29
+ export declare const validateActionFields: (fields: unknown) => z.infer<typeof FieldsValidationSchema>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateActionFields = exports.FieldsValidationSchema = exports.fields = void 0;
4
+ const extensions_core_1 = require("@awell-health/extensions-core");
5
+ const zod_1 = require("zod");
6
+ const lodash_1 = require("lodash");
7
+ exports.fields = {
8
+ characteristics: {
9
+ id: 'characteristics',
10
+ label: 'Characteristics to include in summary',
11
+ description: 'A comma-separated list of patient characteristics you would like to include in the summary (eg: first_name, last_name, birth_date). If left blank, all patient profile characteristics will be included.',
12
+ type: extensions_core_1.FieldType.STRING,
13
+ required: false,
14
+ },
15
+ language: {
16
+ id: 'language',
17
+ label: 'Language of the summary',
18
+ description: 'The language the summary will be written in. Defaults to "English".',
19
+ type: extensions_core_1.FieldType.STRING,
20
+ required: false,
21
+ },
22
+ };
23
+ exports.FieldsValidationSchema = zod_1.z.object({
24
+ characteristics: zod_1.z.optional(zod_1.z
25
+ .string()
26
+ // Make sure all white spaces are stripped
27
+ .transform((chars) => chars.replace(/\s/g, ''))
28
+ .transform((chars) => chars.split(','))
29
+ // Make sure there are no undefined or empty characteristics
30
+ .transform((charsArray) => charsArray.filter((chars) => {
31
+ if ((0, lodash_1.isNil)(chars) || (0, lodash_1.isEmpty)(chars))
32
+ return false;
33
+ return true;
34
+ }))),
35
+ language: zod_1.z.optional(zod_1.z.string()).transform((lang) => {
36
+ if ((0, lodash_1.isNil)(lang) || (0, lodash_1.isEmpty)(lang))
37
+ return 'English';
38
+ return lang;
39
+ }),
40
+ });
41
+ const validateActionFields = (fields) => {
42
+ const parsedData = exports.FieldsValidationSchema.parse(fields);
43
+ return parsedData;
44
+ };
45
+ exports.validateActionFields = validateActionFields;
46
+ //# sourceMappingURL=fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/config/fields.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AACrE,6BAAwC;AACxC,mCAAuC;AAE1B,QAAA,MAAM,GAAG;IACpB,eAAe,EAAE;QACf,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,uCAAuC;QAC9C,WAAW,EACT,0MAA0M;QAC5M,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,KAAK;KAChB;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,qEAAqE;QACvE,IAAI,EAAE,2BAAS,CAAC,MAAM;QACtB,QAAQ,EAAE,KAAK;KAChB;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,eAAe,EAAE,OAAC,CAAC,QAAQ,CACzB,OAAC;SACE,MAAM,EAAE;QACT,0CAA0C;SACzC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC9C,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,4DAA4D;SAC3D,SAAS,CAAC,CAAC,UAAU,EAAE,EAAE,CACxB,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1B,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAEhD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CACH,CACJ;IACD,QAAQ,EAAE,OAAC,CAAC,QAAQ,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;QAClD,IAAI,IAAA,cAAK,EAAC,IAAI,CAAC,IAAI,IAAA,gBAAO,EAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAA;QAElD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;CAC+C,CAAC,CAAA;AAE7C,MAAM,oBAAoB,GAAG,CAClC,MAAe,EACyB,EAAE;IAC1C,MAAM,UAAU,GAAG,8BAAsB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAEvD,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AANY,QAAA,oBAAoB,wBAMhC"}
@@ -0,0 +1,2 @@
1
+ export { fields, validateActionFields } from './fields';
2
+ export { dataPoints } from './dataPoints';
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dataPoints = exports.FieldsValidationSchema = exports.fields = void 0;
3
+ exports.dataPoints = exports.validateActionFields = exports.fields = void 0;
4
4
  var fields_1 = require("./fields");
5
5
  Object.defineProperty(exports, "fields", { enumerable: true, get: function () { return fields_1.fields; } });
6
- Object.defineProperty(exports, "FieldsValidationSchema", { enumerable: true, get: function () { return fields_1.FieldsValidationSchema; } });
6
+ Object.defineProperty(exports, "validateActionFields", { enumerable: true, get: function () { return fields_1.validateActionFields; } });
7
7
  var dataPoints_1 = require("./dataPoints");
8
8
  Object.defineProperty(exports, "dataPoints", { enumerable: true, get: function () { return dataPoints_1.dataPoints; } });
9
9
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/config/index.ts"],"names":[],"mappings":";;;AAAA,mCAAuD;AAA9C,gGAAA,MAAM,OAAA;AAAE,8GAAA,oBAAoB,OAAA;AACrC,2CAAyC;AAAhC,wGAAA,UAAU,OAAA"}
@@ -1,4 +1,4 @@
1
1
  import { type Action } from '@awell-health/extensions-core';
2
- import { type settings } from '../../../settings';
3
2
  import { fields } from './config';
4
- export declare const addIdentifierToPatient: Action<typeof fields, typeof settings>;
3
+ import { type settings } from '../../../settings';
4
+ export declare const generatePatientSummary: Action<typeof fields, typeof settings>;
@@ -3,49 +3,47 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getPatientByIdentifier = void 0;
7
- const settings_1 = require("../../../settings");
8
- const extensions_core_1 = require("@awell-health/extensions-core");
6
+ exports.generatePatientSummary = void 0;
9
7
  const config_1 = require("./config");
8
+ const extensions_core_1 = require("@awell-health/extensions-core");
9
+ const settings_1 = require("../../../settings");
10
10
  const zod_validation_error_1 = require("zod-validation-error");
11
11
  const zod_1 = require("zod");
12
- const awellSdk_1 = __importDefault(require("../../sdk/awellSdk"));
13
- const lodash_1 = require("lodash");
14
- exports.getPatientByIdentifier = {
15
- key: 'getPatientByIdentifier',
16
- category: extensions_core_1.Category.WORKFLOW,
17
- title: 'Get patient by identifier',
18
- description: 'Retrieve a patient based on the provided identifier system and value',
12
+ const openAiSdk_1 = __importDefault(require("../../../common/sdk/openAiSdk"));
13
+ const openai_1 = require("openai");
14
+ const utils_1 = require("./utils");
15
+ exports.generatePatientSummary = {
16
+ key: 'generatePatientSummary',
17
+ title: 'Generate patient summary',
18
+ description: "Generates a human-readable and brief summary about the patient based on the characteristics in the patient's profile.",
19
+ category: extensions_core_1.Category.AI,
19
20
  fields: config_1.fields,
20
21
  dataPoints: config_1.dataPoints,
21
22
  previewable: false,
22
23
  onActivityCreated: async (payload, onComplete, onError) => {
24
+ var _a, _b;
23
25
  try {
24
- const { fields: { system, value }, settings: { apiUrl, apiKey }, } = (0, extensions_core_1.validate)({
25
- schema: zod_1.z.object({
26
- fields: config_1.FieldsValidationSchema,
27
- settings: settings_1.SettingsValidationSchema,
28
- }),
29
- payload,
26
+ const { patient } = payload;
27
+ const { openAiApiKey } = (0, settings_1.validateSettings)(payload.settings);
28
+ const { characteristics, language } = (0, config_1.validateActionFields)(payload.fields);
29
+ const configuration = new openai_1.Configuration({
30
+ apiKey: openAiApiKey,
30
31
  });
31
- const sdk = new awellSdk_1.default({ apiUrl, apiKey });
32
- const patient = await sdk.getPatientByIdentifier({
33
- system,
34
- value,
32
+ const openai = new openAiSdk_1.default(configuration);
33
+ const prompt = (0, utils_1.generatePrompt)(patient, characteristics, language);
34
+ const TOKENS_FOR_PROMPT = 400;
35
+ const TOKENS_FOR_COMPLETION = 100;
36
+ const result = await openai.createCompletion({
37
+ model: 'text-davinci-003',
38
+ prompt,
39
+ temperature: 0,
40
+ max_tokens: TOKENS_FOR_PROMPT + TOKENS_FOR_COMPLETION,
41
+ n: 1, // Only generate one completion per prompt
35
42
  });
36
- if ((0, lodash_1.isNil)(patient)) {
37
- await onComplete({
38
- data_points: {
39
- patientAlreadyExists: String(false),
40
- patientId: undefined,
41
- },
42
- });
43
- return;
44
- }
45
43
  await onComplete({
46
44
  data_points: {
47
- patientAlreadyExists: String(true),
48
- patientId: patient.id,
45
+ prompt,
46
+ patientSummary: String((_b = (_a = result === null || result === void 0 ? void 0 : result.data) === null || _a === void 0 ? void 0 : _a.choices[0]) === null || _b === void 0 ? void 0 : _b.text),
49
47
  },
50
48
  });
51
49
  }
@@ -71,7 +69,7 @@ exports.getPatientByIdentifier = {
71
69
  events: [
72
70
  {
73
71
  date: new Date().toISOString(),
74
- text: { en: 'Awell API reported an error' },
72
+ text: { en: 'Something went wrong while orchestration the action' },
75
73
  error: {
76
74
  category: 'SERVER_ERROR',
77
75
  message: error.message,
@@ -82,4 +80,4 @@ exports.getPatientByIdentifier = {
82
80
  }
83
81
  },
84
82
  };
85
- //# sourceMappingURL=getPatientByIdentifier.js.map
83
+ //# sourceMappingURL=generatePatientSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePatientSummary.js","sourceRoot":"","sources":["../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.ts"],"names":[],"mappings":";;;;;;AACA,qCAAmE;AACnE,mEAAwD;AACxD,gDAAmE;AACnE,+DAAmD;AACnD,6BAA8B;AAC9B,8EAAqD;AACrD,mCAAsC;AACtC,mCAAwC;AAE3B,QAAA,sBAAsB,GAA2C;IAC5E,GAAG,EAAE,wBAAwB;IAC7B,KAAK,EAAE,0BAA0B;IACjC,WAAW,EACT,uHAAuH;IACzH,QAAQ,EAAE,0BAAQ,CAAC,EAAE;IACrB,MAAM,EAAN,eAAM;IACN,UAAU,EAAV,mBAAU;IACV,WAAW,EAAE,KAAK;IAClB,iBAAiB,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;;QACxD,IAAI;YACF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;YAC3B,MAAM,EAAE,YAAY,EAAE,GAAG,IAAA,2BAAgB,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YAC3D,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAA,6BAAoB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAE1E,MAAM,aAAa,GAAG,IAAI,sBAAa,CAAC;gBACtC,MAAM,EAAE,YAAY;aACrB,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,IAAI,mBAAS,CAAC,aAAa,CAAC,CAAA;YAE3C,MAAM,MAAM,GAAG,IAAA,sBAAc,EAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAA;YAEjE,MAAM,iBAAiB,GAAG,GAAG,CAAA;YAC7B,MAAM,qBAAqB,GAAG,GAAG,CAAA;YAEjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;gBAC3C,KAAK,EAAE,kBAAkB;gBACzB,MAAM;gBACN,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,iBAAiB,GAAG,qBAAqB;gBACrD,CAAC,EAAE,CAAC,EAAE,0CAA0C;aACjD,CAAC,CAAA;YAEF,MAAM,UAAU,CAAC;gBACf,WAAW,EAAE;oBACX,MAAM;oBACN,cAAc,EAAE,MAAM,CAAC,MAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,OAAO,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC;iBACvD;aACF,CAAC,CAAA;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,YAAY,cAAQ,EAAE;gBAC3B,MAAM,KAAK,GAAG,IAAA,mCAAY,EAAC,GAAG,CAAC,CAAA;gBAC/B,MAAM,OAAO,CAAC;oBACZ,MAAM,EAAE;wBACN;4BACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE;4BACxB,KAAK,EAAE;gCACL,QAAQ,EAAE,aAAa;gCACvB,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE;6BAC5B;yBACF;qBACF;iBACF,CAAC,CAAA;gBACF,OAAM;aACP;YAED,MAAM,KAAK,GAAG,GAAY,CAAA;YAC1B,MAAM,OAAO,CAAC;gBACZ,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBAC9B,IAAI,EAAE,EAAE,EAAE,EAAE,qDAAqD,EAAE;wBACnE,KAAK,EAAE;4BACL,QAAQ,EAAE,cAAc;4BACxB,OAAO,EAAE,KAAK,CAAC,OAAO;yBACvB;qBACF;iBACF;aACF,CAAC,CAAA;SACH;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const __1 = require("..");
4
+ const tests_1 = require("../../../../../src/tests");
5
+ jest.mock('../../../common/sdk/openAiSdk');
6
+ describe('Generate patient summary with Open AI', () => {
7
+ const onComplete = jest.fn();
8
+ const onError = jest.fn();
9
+ beforeEach(() => {
10
+ onComplete.mockClear();
11
+ onError.mockClear();
12
+ });
13
+ test('Should call the onComplete callback', async () => {
14
+ await __1.generatePatientSummary.onActivityCreated((0, tests_1.generateTestPayload)({
15
+ fields: {
16
+ characteristics: '',
17
+ language: 'English',
18
+ },
19
+ settings: {
20
+ openAiApiKey: 'an-api-key',
21
+ },
22
+ }), onComplete, onError);
23
+ expect(onComplete).toHaveBeenCalled();
24
+ expect(onError).not.toHaveBeenCalled();
25
+ });
26
+ });
27
+ //# sourceMappingURL=generatePatientSummary.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePatientSummary.test.js","sourceRoot":"","sources":["../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.test.ts"],"names":[],"mappings":";;AAAA,0BAA2C;AAC3C,oDAA8D;AAE9D,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;AAE1C,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEzB,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,CAAC,SAAS,EAAE,CAAA;QACtB,OAAO,CAAC,SAAS,EAAE,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,0BAAsB,CAAC,iBAAiB,CAC5C,IAAA,2BAAmB,EAAC;YAClB,MAAM,EAAE;gBACN,eAAe,EAAE,EAAE;gBACnB,QAAQ,EAAE,SAAS;aACpB;YACD,QAAQ,EAAE;gBACR,YAAY,EAAE,YAAY;aAC3B;SACF,CAAC,EACF,UAAU,EACV,OAAO,CACR,CAAA;QAED,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;IACxC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { generatePatientSummary } from './generatePatientSummary';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePatientSummary = void 0;
4
+ var generatePatientSummary_1 = require("./generatePatientSummary");
5
+ Object.defineProperty(exports, "generatePatientSummary", { enumerable: true, get: function () { return generatePatientSummary_1.generatePatientSummary; } });
6
+ //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/awell/v1/actions/addIdentifierToPatient/index.ts"],"names":[],"mappings":";;;AAAA,mEAAiE;AAAxD,gIAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/index.ts"],"names":[],"mappings":";;;AAAA,mEAAiE;AAAxD,gIAAA,sBAAsB,OAAA"}
@@ -0,0 +1,3 @@
1
+ import { type Patient } from '@awell-health/extensions-core';
2
+ export declare const promptQuestion: (language: string) => string;
3
+ export declare const generatePrompt: (patient: Patient, characteristics?: string[], language?: string) => string;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePrompt = exports.promptQuestion = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const promptQuestion = (language) => `Create a human-readable summary of a person that only includes the below characteristics. The text should be written in the present tense. Write it in ${language}.`;
6
+ exports.promptQuestion = promptQuestion;
7
+ const generatePrompt = (patient, characteristics, language = 'English') => {
8
+ var _a;
9
+ const flattenedProfile = {
10
+ ...(0, lodash_1.omit)(patient.profile, ['address']),
11
+ ...(_a = patient.profile) === null || _a === void 0 ? void 0 : _a.address,
12
+ };
13
+ const getCharacteristicsForPrompt = () => {
14
+ if ((0, lodash_1.isNil)(characteristics) || (0, lodash_1.isEmpty)(characteristics))
15
+ return flattenedProfile;
16
+ return (0, lodash_1.pick)(flattenedProfile, characteristics);
17
+ };
18
+ const characteristicsForPrompt = getCharacteristicsForPrompt();
19
+ const characteristicsArray = Object.entries(characteristicsForPrompt)
20
+ .map((e) => ({ [e[0]]: e[1] }))
21
+ .filter((chars) => {
22
+ if ((0, lodash_1.isNil)(chars) || (0, lodash_1.isEmpty)(chars))
23
+ return false;
24
+ return true;
25
+ });
26
+ const characteristicsPrompt = characteristicsArray
27
+ .filter((char) => {
28
+ const value = Object.values(char)[0];
29
+ if ((0, lodash_1.isNil)(value) || (0, lodash_1.isEmpty)(value))
30
+ return false;
31
+ return true;
32
+ })
33
+ .map((char) => {
34
+ return `Characteristic: ${(0, lodash_1.startCase)(String(Object.keys(char)[0]))}
35
+ Value: ${String(Object.values(char)[0]).trim()}`;
36
+ })
37
+ .join('\n\n');
38
+ return `${(0, exports.promptQuestion)(language)}
39
+
40
+ ${characteristicsPrompt}`;
41
+ };
42
+ exports.generatePrompt = generatePrompt;
43
+ //# sourceMappingURL=generatePrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePrompt.js","sourceRoot":"","sources":["../../../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.ts"],"names":[],"mappings":";;;AAAA,mCAA8D;AAGvD,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAU,EAAE,CACzD,0JAA0J,QAAQ,GAAG,CAAA;AAD1J,QAAA,cAAc,kBAC4I;AAEhK,MAAM,cAAc,GAAG,CAC5B,OAAgB,EAChB,eAA0B,EAC1B,WAAmB,SAAS,EACpB,EAAE;;IACV,MAAM,gBAAgB,GAAG;QACvB,GAAG,IAAA,aAAI,EAAC,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;QACrC,GAAG,MAAA,OAAO,CAAC,OAAO,0CAAE,OAAO;KAC5B,CAAA;IAED,MAAM,2BAA2B,GAAG,GAA4B,EAAE;QAChE,IAAI,IAAA,cAAK,EAAC,eAAe,CAAC,IAAI,IAAA,gBAAO,EAAC,eAAe,CAAC;YACpD,OAAO,gBAAgB,CAAA;QAEzB,OAAO,IAAA,aAAI,EAAC,gBAAgB,EAAE,eAAe,CAAC,CAAA;IAChD,CAAC,CAAA;IAED,MAAM,wBAAwB,GAAG,2BAA2B,EAAE,CAAA;IAC9D,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAAC;SAClE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SAC9B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAChB,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAEhD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IAEJ,MAAM,qBAAqB,GAAG,oBAAoB;SAC/C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAEpC,IAAI,IAAA,cAAK,EAAC,KAAK,CAAC,IAAI,IAAA,gBAAO,EAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAEhD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,OAAO,mBAAmB,IAAA,kBAAS,EAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAA;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,CAAA;IAEf,OAAO,GAAG,IAAA,sBAAc,EAAC,QAAQ,CAAC;;EAElC,qBAAqB,EAAE,CAAA;AACzB,CAAC,CAAA;AA3CY,QAAA,cAAc,kBA2C1B"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const graphql_1 = require("../../../../../../awell/v1/gql/graphql");
4
+ const generatePrompt_1 = require("./generatePrompt");
5
+ const language = 'English';
6
+ describe('Generate prompt for patient summary', () => {
7
+ test('Should generate a prompt with all characteristics', async () => {
8
+ const result = (0, generatePrompt_1.generatePrompt)({
9
+ id: 'patient-id',
10
+ profile: {
11
+ first_name: 'Nick',
12
+ last_name: 'Hellemans',
13
+ address: {
14
+ street: 'John Doe Street 20',
15
+ city: 'Kontich',
16
+ country: 'Belgium',
17
+ state: 'Antwerp',
18
+ zip: '2550',
19
+ },
20
+ birth_date: '1993-11-30',
21
+ email: 'john.doe@awellhealth.com',
22
+ mobile_phone: '+32 xxx xx xx xx',
23
+ phone: '+32 xxx xx xx xx',
24
+ national_registry_number: '123456789',
25
+ patient_code: '98765',
26
+ preferred_language: 'en',
27
+ sex: graphql_1.Sex.Male,
28
+ },
29
+ }, [], language);
30
+ expect(result).toBe(`${(0, generatePrompt_1.promptQuestion)(language)}
31
+
32
+ Characteristic: First Name
33
+ Value: Nick
34
+
35
+ Characteristic: Last Name
36
+ Value: Hellemans
37
+
38
+ Characteristic: Birth Date
39
+ Value: 1993-11-30
40
+
41
+ Characteristic: Email
42
+ Value: john.doe@awellhealth.com
43
+
44
+ Characteristic: Mobile Phone
45
+ Value: +32 xxx xx xx xx
46
+
47
+ Characteristic: Phone
48
+ Value: +32 xxx xx xx xx
49
+
50
+ Characteristic: National Registry Number
51
+ Value: 123456789
52
+
53
+ Characteristic: Patient Code
54
+ Value: 98765
55
+
56
+ Characteristic: Preferred Language
57
+ Value: en
58
+
59
+ Characteristic: Sex
60
+ Value: MALE
61
+
62
+ Characteristic: Street
63
+ Value: John Doe Street 20
64
+
65
+ Characteristic: City
66
+ Value: Kontich
67
+
68
+ Characteristic: Country
69
+ Value: Belgium
70
+
71
+ Characteristic: State
72
+ Value: Antwerp
73
+
74
+ Characteristic: Zip
75
+ Value: 2550`);
76
+ });
77
+ test('Should generate a prompt with only a subset of characteristics', async () => {
78
+ const result = (0, generatePrompt_1.generatePrompt)({
79
+ id: 'patient-id',
80
+ profile: {
81
+ first_name: 'Nick',
82
+ last_name: 'Hellemans',
83
+ address: {
84
+ street: 'John Doe Street 20',
85
+ city: 'Kontich',
86
+ country: 'Belgium',
87
+ state: 'Antwerp',
88
+ zip: '2550',
89
+ },
90
+ birth_date: '1993-11-30',
91
+ email: 'john.doe@awellhealth.com',
92
+ mobile_phone: '+32 xxx xx xx xx',
93
+ phone: '+32 xxx xx xx xx',
94
+ national_registry_number: '123456789',
95
+ patient_code: '98765',
96
+ preferred_language: 'en',
97
+ sex: graphql_1.Sex.Male,
98
+ },
99
+ }, ['first_name', 'email', 'street', 'non_existing_char', ''], language);
100
+ expect(result).toBe(`${(0, generatePrompt_1.promptQuestion)(language)}
101
+
102
+ Characteristic: First Name
103
+ Value: Nick
104
+
105
+ Characteristic: Email
106
+ Value: john.doe@awellhealth.com
107
+
108
+ Characteristic: Street
109
+ Value: John Doe Street 20`);
110
+ });
111
+ test('Should generate a prompt only with characteristics that are defined', async () => {
112
+ const result = (0, generatePrompt_1.generatePrompt)({
113
+ id: 'patient-id',
114
+ profile: {
115
+ first_name: 'Nick',
116
+ // last_name: 'Hellemans'
117
+ sex: undefined,
118
+ email: 'john.doe@awellhealth.com',
119
+ address: {
120
+ street: undefined,
121
+ },
122
+ },
123
+ }, ['first_name', 'last_name', 'sex', 'email', 'street'], language);
124
+ expect(result).toBe(`${(0, generatePrompt_1.promptQuestion)(language)}
125
+
126
+ Characteristic: First Name
127
+ Value: Nick
128
+
129
+ Characteristic: Email
130
+ Value: john.doe@awellhealth.com`);
131
+ });
132
+ });
133
+ //# sourceMappingURL=generatePrompt.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generatePrompt.test.js","sourceRoot":"","sources":["../../../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.test.ts"],"names":[],"mappings":";;AAAA,oEAA4D;AAC5D,qDAAiE;AAEjE,MAAM,QAAQ,GAAG,SAAS,CAAA;AAE1B,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,IAAI,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,MAAM,GAAG,IAAA,+BAAc,EAC3B;YACE,EAAE,EAAE,YAAY;YAChB,OAAO,EAAE;gBACP,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE;oBACP,MAAM,EAAE,oBAAoB;oBAC5B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,MAAM;iBACZ;gBACD,UAAU,EAAE,YAAY;gBACxB,KAAK,EAAE,0BAA0B;gBACjC,YAAY,EAAE,kBAAkB;gBAChC,KAAK,EAAE,kBAAkB;gBACzB,wBAAwB,EAAE,WAAW;gBACrC,YAAY,EAAE,OAAO;gBACrB,kBAAkB,EAAE,IAAI;gBACxB,GAAG,EAAE,aAAG,CAAC,IAAI;aACd;SACF,EACD,EAAE,EACF,QAAQ,CACT,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,IAAA,+BAAc,EAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA6CvC,CAAC,CAAA;IACX,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,MAAM,GAAG,IAAA,+BAAc,EAC3B;YACE,EAAE,EAAE,YAAY;YAChB,OAAO,EAAE;gBACP,UAAU,EAAE,MAAM;gBAClB,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE;oBACP,MAAM,EAAE,oBAAoB;oBAC5B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,SAAS;oBAClB,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,MAAM;iBACZ;gBACD,UAAU,EAAE,YAAY;gBACxB,KAAK,EAAE,0BAA0B;gBACjC,YAAY,EAAE,kBAAkB;gBAChC,KAAK,EAAE,kBAAkB;gBACzB,wBAAwB,EAAE,WAAW;gBACrC,YAAY,EAAE,OAAO;gBACrB,kBAAkB,EAAE,IAAI;gBACxB,GAAG,EAAE,aAAG,CAAC,IAAI;aACd;SACF,EACD,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,CAAC,EAC1D,QAAQ,CACT,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,IAAA,+BAAc,EAAC,QAAQ,CAAC;;;;;;;;;0BASzB,CAAC,CAAA;IACzB,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,MAAM,GAAG,IAAA,+BAAc,EAC3B;YACE,EAAE,EAAE,YAAY;YAChB,OAAO,EAAE;gBACP,UAAU,EAAE,MAAM;gBAClB,2BAA2B;gBAC3B,GAAG,EAAE,SAAS;gBACd,KAAK,EAAE,0BAA0B;gBACjC,OAAO,EAAE;oBACP,MAAM,EAAE,SAAS;iBAClB;aACF;SACF,EACD,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EACrD,QAAQ,CACT,CAAA;QAED,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,IAAA,+BAAc,EAAC,QAAQ,CAAC;;;;;;gCAMnB,CAAC,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export { generatePrompt } from './generatePrompt';