@awell-health/awell-extensions 1.0.243 → 1.1.0-beta10

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 (112) hide show
  1. package/dist/extensions/avaAi/common/sdk/openAiSdk.d.ts +2 -0
  2. package/dist/extensions/avaAi/common/sdk/openAiSdk.js +5 -0
  3. package/dist/extensions/avaAi/common/sdk/openAiSdk.js.map +1 -0
  4. package/dist/extensions/avaAi/index.d.ts +2 -0
  5. package/dist/extensions/avaAi/index.js +21 -0
  6. package/dist/extensions/avaAi/index.js.map +1 -0
  7. package/dist/extensions/avaAi/settings.d.ts +18 -0
  8. package/dist/extensions/avaAi/settings.js +22 -0
  9. package/dist/extensions/avaAi/settings.js.map +1 -0
  10. package/dist/extensions/{awell/v1/actions/getPatientByIdentifier → avaAi/v1/actions/generatePatientSummary}/config/dataPoints.d.ts +3 -3
  11. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/dataPoints.js +15 -0
  12. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/dataPoints.js.map +1 -0
  13. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/fields.d.ts +29 -0
  14. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/fields.js +46 -0
  15. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/fields.js.map +1 -0
  16. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/index.d.ts +2 -0
  17. package/dist/extensions/{awell/v1/actions/getPatientByIdentifier → avaAi/v1/actions/generatePatientSummary}/config/index.js +2 -2
  18. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/config/index.js.map +1 -0
  19. package/dist/extensions/{awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.d.ts → avaAi/v1/actions/generatePatientSummary/generatePatientSummary.d.ts} +2 -2
  20. package/dist/extensions/{awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.js → avaAi/v1/actions/generatePatientSummary/generatePatientSummary.js} +31 -33
  21. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.js.map +1 -0
  22. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.test.js +27 -0
  23. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/generatePatientSummary.test.js.map +1 -0
  24. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/index.d.ts +1 -0
  25. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/index.js +6 -0
  26. package/dist/extensions/{awell/v1/actions/addIdentifierToPatient → avaAi/v1/actions/generatePatientSummary}/index.js.map +1 -1
  27. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.d.ts +3 -0
  28. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.js +43 -0
  29. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.js.map +1 -0
  30. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.test.js +133 -0
  31. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.test.js.map +1 -0
  32. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/index.d.ts +1 -0
  33. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/index.js +6 -0
  34. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/index.js.map +1 -0
  35. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/index.d.ts +1 -0
  36. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/index.js +6 -0
  37. package/dist/extensions/avaAi/v1/actions/generatePatientSummary/utils/index.js.map +1 -0
  38. package/dist/extensions/avaAi/v1/actions/index.d.ts +1 -0
  39. package/dist/extensions/avaAi/v1/actions/index.js +6 -0
  40. package/dist/extensions/avaAi/v1/actions/index.js.map +1 -0
  41. package/dist/extensions/awell/index.js +0 -2
  42. package/dist/extensions/awell/index.js.map +1 -1
  43. package/dist/extensions/awell/v1/actions/index.d.ts +0 -2
  44. package/dist/extensions/awell/v1/actions/index.js +1 -5
  45. package/dist/extensions/awell/v1/actions/index.js.map +1 -1
  46. package/dist/extensions/awell/v1/actions/searchPatientsByPatientCode/searchPatientsByPatientCode.js +1 -1
  47. package/dist/extensions/awell/v1/actions/searchPatientsByPatientCode/searchPatientsByPatientCode.js.map +1 -1
  48. package/dist/extensions/awell/v1/gql/fragment-masking.d.ts +13 -0
  49. package/dist/extensions/awell/v1/gql/fragment-masking.js +12 -0
  50. package/dist/extensions/awell/v1/gql/fragment-masking.js.map +1 -0
  51. package/dist/extensions/awell/v1/gql/gql.d.ts +36 -0
  52. package/dist/extensions/awell/v1/gql/gql.js +47 -0
  53. package/dist/extensions/awell/v1/gql/gql.js.map +1 -0
  54. package/dist/extensions/awell/v1/gql/graphql.d.ts +525 -1066
  55. package/dist/extensions/awell/v1/gql/graphql.js +17 -46
  56. package/dist/extensions/awell/v1/gql/graphql.js.map +1 -1
  57. package/dist/extensions/awell/v1/gql/index.d.ts +2 -0
  58. package/dist/extensions/awell/v1/gql/index.js +19 -0
  59. package/dist/extensions/awell/v1/gql/index.js.map +1 -0
  60. package/dist/extensions/awell/v1/sdk/awellSdk.d.ts +1 -6
  61. package/dist/extensions/awell/v1/sdk/awellSdk.js +0 -11
  62. package/dist/extensions/awell/v1/sdk/awellSdk.js.map +1 -1
  63. package/dist/extensions/awell/v1/sdk/graphql/index.d.ts +0 -2
  64. package/dist/extensions/awell/v1/sdk/graphql/index.js +1 -5
  65. package/dist/extensions/awell/v1/sdk/graphql/index.js.map +1 -1
  66. package/dist/extensions/canvasMedical/v1/actions/createClaim/config/fields.d.ts +2 -2
  67. package/dist/extensions/canvasMedical/v1/validation/patient.zod.d.ts +44 -44
  68. package/dist/extensions/index.d.ts +1 -1
  69. package/dist/extensions/index.js +9 -2
  70. package/dist/extensions/index.js.map +1 -1
  71. package/dist/extensions/markdown.json +6 -2
  72. package/package.json +4 -3
  73. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.js +0 -74
  74. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.js.map +0 -1
  75. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.test.js +0 -36
  76. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.test.js.map +0 -1
  77. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/dataPoints.d.ts +0 -1
  78. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/dataPoints.js +0 -5
  79. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/dataPoints.js.map +0 -1
  80. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/fields.d.ts +0 -28
  81. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/fields.js +0 -26
  82. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/fields.js.map +0 -1
  83. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/index.d.ts +0 -3
  84. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/index.js +0 -11
  85. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/index.js.map +0 -1
  86. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/patient.d.ts +0 -8
  87. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/patient.js +0 -6
  88. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/config/patient.js.map +0 -1
  89. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/index.d.ts +0 -1
  90. package/dist/extensions/awell/v1/actions/addIdentifierToPatient/index.js +0 -6
  91. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/dataPoints.js +0 -14
  92. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/dataPoints.js.map +0 -1
  93. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/fields.d.ts +0 -28
  94. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/fields.js +0 -26
  95. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/fields.js.map +0 -1
  96. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/index.d.ts +0 -2
  97. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/config/index.js.map +0 -1
  98. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.d.ts +0 -4
  99. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.js.map +0 -1
  100. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.test.js +0 -43
  101. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.test.js.map +0 -1
  102. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/index.d.ts +0 -1
  103. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/index.js +0 -6
  104. package/dist/extensions/awell/v1/actions/getPatientByIdentifier/index.js.map +0 -1
  105. package/dist/extensions/awell/v1/sdk/graphql/addIdentifier.mutation.d.ts +0 -1
  106. package/dist/extensions/awell/v1/sdk/graphql/addIdentifier.mutation.js +0 -15
  107. package/dist/extensions/awell/v1/sdk/graphql/addIdentifier.mutation.js.map +0 -1
  108. package/dist/extensions/awell/v1/sdk/graphql/getPatientByIdentifier.query.d.ts +0 -1
  109. package/dist/extensions/awell/v1/sdk/graphql/getPatientByIdentifier.query.js +0 -37
  110. package/dist/extensions/awell/v1/sdk/graphql/getPatientByIdentifier.query.js.map +0 -1
  111. /package/dist/extensions/{awell/v1/actions/addIdentifierToPatient/addIdentifierToPatient.test.d.ts → avaAi/v1/actions/generatePatientSummary/generatePatientSummary.test.d.ts} +0 -0
  112. /package/dist/extensions/{awell/v1/actions/getPatientByIdentifier/getPatientByIdentifier.test.d.ts → avaAi/v1/actions/generatePatientSummary/utils/generatePromp/generatePrompt.test.d.ts} +0 -0
@@ -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';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePrompt = void 0;
4
+ var generatePrompt_1 = require("./generatePrompt");
5
+ Object.defineProperty(exports, "generatePrompt", { enumerable: true, get: function () { return generatePrompt_1.generatePrompt; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/utils/generatePromp/index.ts"],"names":[],"mappings":";;;AAAA,mDAAiD;AAAxC,gHAAA,cAAc,OAAA"}
@@ -0,0 +1 @@
1
+ export { generatePrompt } from './generatePromp';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePrompt = void 0;
4
+ var generatePromp_1 = require("./generatePromp");
5
+ Object.defineProperty(exports, "generatePrompt", { enumerable: true, get: function () { return generatePromp_1.generatePrompt; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../extensions/avaAi/v1/actions/generatePatientSummary/utils/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,+GAAA,cAAc,OAAA"}
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/avaAi/v1/actions/index.ts"],"names":[],"mappings":";;;AAAA,mEAAiE;AAAxD,gIAAA,sBAAsB,OAAA"}