@awell-health/awell-extensions 2.0.137 → 2.0.139

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. package/dist/extensions/collectData/index.js +1 -0
  2. package/dist/extensions/collectData/index.js.map +1 -1
  3. package/dist/extensions/collectData/v1/actions/arrayTest/config/fields.d.ts +24 -0
  4. package/dist/extensions/collectData/v1/actions/arrayTest/config/fields.js +35 -0
  5. package/dist/extensions/collectData/v1/actions/arrayTest/config/fields.js.map +1 -1
  6. package/dist/extensions/collectData/v1/actions/index.d.ts +1 -0
  7. package/dist/extensions/collectData/v1/actions/index.js +3 -2
  8. package/dist/extensions/collectData/v1/actions/index.js.map +1 -1
  9. package/dist/extensions/medplum/actions/createCalculationObservation/createCalculationObservation.js +63 -42
  10. package/dist/extensions/medplum/actions/createCalculationObservation/createCalculationObservation.js.map +1 -1
  11. package/dist/extensions/medplum/actions/submitQuestionnaireResponse/__testdata__/index.d.ts +1 -0
  12. package/dist/{src/lib/fhir/transformers/AwellFormResponseToFhirQuestionnaireResponse → extensions/medplum/actions/submitQuestionnaireResponse/__testdata__}/index.js +1 -1
  13. package/dist/extensions/medplum/actions/submitQuestionnaireResponse/__testdata__/index.js.map +1 -0
  14. package/dist/extensions/medplum/actions/submitQuestionnaireResponse/__testdata__/submitQuestionnaireResponse.mocks.d.ts +38 -0
  15. package/dist/extensions/medplum/actions/submitQuestionnaireResponse/__testdata__/submitQuestionnaireResponse.mocks.js +62 -0
  16. package/dist/extensions/medplum/actions/submitQuestionnaireResponse/__testdata__/submitQuestionnaireResponse.mocks.js.map +1 -0
  17. package/dist/extensions/medplum/actions/submitQuestionnaireResponse/submitQuestionnaireResponse.js +29 -47
  18. package/dist/extensions/medplum/actions/submitQuestionnaireResponse/submitQuestionnaireResponse.js.map +1 -1
  19. package/dist/extensions/medplum/settings.d.ts +0 -20
  20. package/dist/extensions/medplum/settings.js +0 -16
  21. package/dist/extensions/medplum/settings.js.map +1 -1
  22. package/dist/src/lib/awell/getAllFormsInCurrentStep/getAllFormsInCurrentStep.js +4 -2
  23. package/dist/src/lib/awell/getAllFormsInCurrentStep/getAllFormsInCurrentStep.js.map +1 -1
  24. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/__testdata__/getLastCalculationActivityInCurrentStep.mock.d.ts +49 -0
  25. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/__testdata__/getLastCalculationActivityInCurrentStep.mock.js +61 -0
  26. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/__testdata__/getLastCalculationActivityInCurrentStep.mock.js.map +1 -0
  27. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/__testdata__/index.d.ts +1 -0
  28. package/dist/src/lib/{fhir/transformers → awell/getLastCalculationActivityInCurrentStep}/__testdata__/index.js +1 -2
  29. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/__testdata__/index.js.map +1 -0
  30. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/getLastCalculationActivityInCurrentStep.d.ts +8 -0
  31. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/getLastCalculationActivityInCurrentStep.js +58 -0
  32. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/getLastCalculationActivityInCurrentStep.js.map +1 -0
  33. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/index.d.ts +1 -0
  34. package/dist/src/lib/{fhir/transformers → awell/getLastCalculationActivityInCurrentStep}/index.js +1 -2
  35. package/dist/src/lib/awell/getLastCalculationActivityInCurrentStep/index.js.map +1 -0
  36. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/formDefinitionResponse.d.ts +170 -8
  37. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/formDefinitionResponse.js +1 -0
  38. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/formDefinitionResponse.js.map +1 -1
  39. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/formResponseResponse.d.ts +47 -4
  40. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/formResponseResponse.js +1 -0
  41. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/formResponseResponse.js.map +1 -1
  42. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/pathwayActivitiesResponse.d.ts +33 -7
  43. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/pathwayActivitiesResponse.js +27 -44
  44. package/dist/src/lib/awell/getLatestFormInCurrentStep/__testdata__/pathwayActivitiesResponse.js.map +1 -1
  45. package/dist/src/lib/awell/getLatestFormInCurrentStep/getLatestFormInCurrentStep.js +28 -16
  46. package/dist/src/lib/awell/getLatestFormInCurrentStep/getLatestFormInCurrentStep.js.map +1 -1
  47. package/dist/src/lib/awell/index.d.ts +2 -0
  48. package/dist/src/lib/awell/index.js +2 -0
  49. package/dist/src/lib/awell/index.js.map +1 -1
  50. package/dist/src/lib/types/DeepPartial.d.ts +3 -0
  51. package/dist/src/lib/types/DeepPartial.js +3 -0
  52. package/dist/src/lib/types/DeepPartial.js.map +1 -0
  53. package/dist/src/lib/types/index.d.ts +1 -0
  54. package/dist/src/lib/{fhir/transformers/AwellFormToFhirQuestionnaire → types}/index.js +1 -1
  55. package/dist/src/lib/types/index.js.map +1 -0
  56. package/package.json +1 -1
  57. package/dist/src/lib/fhir/transformers/AwellFormResponseToFhirQuestionnaireResponse/AwellFormResponseToFhirQuestionnaireResponseItems.d.ts +0 -6
  58. package/dist/src/lib/fhir/transformers/AwellFormResponseToFhirQuestionnaireResponse/AwellFormResponseToFhirQuestionnaireResponseItems.js +0 -105
  59. package/dist/src/lib/fhir/transformers/AwellFormResponseToFhirQuestionnaireResponse/AwellFormResponseToFhirQuestionnaireResponseItems.js.map +0 -1
  60. package/dist/src/lib/fhir/transformers/AwellFormResponseToFhirQuestionnaireResponse/index.d.ts +0 -1
  61. package/dist/src/lib/fhir/transformers/AwellFormResponseToFhirQuestionnaireResponse/index.js.map +0 -1
  62. package/dist/src/lib/fhir/transformers/AwellFormToFhirQuestionnaire/AwellFormToFhirQuestionnaire.d.ts +0 -3
  63. package/dist/src/lib/fhir/transformers/AwellFormToFhirQuestionnaire/AwellFormToFhirQuestionnaire.js +0 -121
  64. package/dist/src/lib/fhir/transformers/AwellFormToFhirQuestionnaire/AwellFormToFhirQuestionnaire.js.map +0 -1
  65. package/dist/src/lib/fhir/transformers/AwellFormToFhirQuestionnaire/index.d.ts +0 -1
  66. package/dist/src/lib/fhir/transformers/AwellFormToFhirQuestionnaire/index.js.map +0 -1
  67. package/dist/src/lib/fhir/transformers/__testdata__/formDefinition.data.d.ts +0 -2
  68. package/dist/src/lib/fhir/transformers/__testdata__/formDefinition.data.js +0 -264
  69. package/dist/src/lib/fhir/transformers/__testdata__/formDefinition.data.js.map +0 -1
  70. package/dist/src/lib/fhir/transformers/__testdata__/formResponse.data.d.ts +0 -2
  71. package/dist/src/lib/fhir/transformers/__testdata__/formResponse.data.js +0 -68
  72. package/dist/src/lib/fhir/transformers/__testdata__/formResponse.data.js.map +0 -1
  73. package/dist/src/lib/fhir/transformers/__testdata__/index.d.ts +0 -2
  74. package/dist/src/lib/fhir/transformers/__testdata__/index.js.map +0 -1
  75. package/dist/src/lib/fhir/transformers/index.d.ts +0 -2
  76. package/dist/src/lib/fhir/transformers/index.js.map +0 -1
@@ -16,6 +16,7 @@ exports.CollectData = {
16
16
  actions: {
17
17
  collectMedication: actions_1.collectMedication,
18
18
  remoteSingleSelect: actions_1.remoteSingleSelect,
19
+ arrayTest: actions_1.arrayTest,
19
20
  },
20
21
  settings: settings_1.settings,
21
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/collectData/index.ts"],"names":[],"mappings":";;;AACA,mEAAoE;AACpE,0CAAoE;AACpE,yCAAqC;AAExB,QAAA,WAAW,GAAc;IACpC,GAAG,EAAE,aAAa;IAClB,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EACN,iGAAiG;IACnG,WAAW,EACT,qHAAqH;IACvH,QAAQ,EAAE,0BAAQ,CAAC,KAAK;IACxB,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,OAAO,EAAE;QACP,iBAAiB,EAAjB,2BAAiB;QACjB,kBAAkB,EAAlB,4BAAkB;KACnB;IACD,QAAQ,EAAR,mBAAQ;CACT,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../extensions/collectData/index.ts"],"names":[],"mappings":";;;AACA,mEAAoE;AACpE,0CAA+E;AAC/E,yCAAqC;AAExB,QAAA,WAAW,GAAc;IACpC,GAAG,EAAE,aAAa;IAClB,KAAK,EAAE,0BAA0B;IACjC,QAAQ,EACN,iGAAiG;IACnG,WAAW,EACT,qHAAqH;IACvH,QAAQ,EAAE,0BAAQ,CAAC,KAAK;IACxB,MAAM,EAAE;QACN,UAAU,EAAE,4BAAU,CAAC,KAAK;KAC7B;IACD,OAAO,EAAE;QACP,iBAAiB,EAAjB,2BAAiB;QACjB,kBAAkB,EAAlB,4BAAkB;QAClB,SAAS,EAAT,mBAAS;KACV;IACD,QAAQ,EAAR,mBAAQ;CACT,CAAA"}
@@ -7,6 +7,12 @@ export declare const fields: {
7
7
  description: string;
8
8
  type: FieldType.STRING_ARRAY;
9
9
  required: true;
10
+ options: {
11
+ dropdownOptions: {
12
+ value: string;
13
+ label: string;
14
+ }[];
15
+ };
10
16
  };
11
17
  numericArray: {
12
18
  id: string;
@@ -14,6 +20,12 @@ export declare const fields: {
14
20
  description: string;
15
21
  type: FieldType.NUMERIC_ARRAY;
16
22
  required: true;
23
+ options: {
24
+ dropdownOptions: {
25
+ label: string;
26
+ value: number;
27
+ }[];
28
+ };
17
29
  };
18
30
  anotherStringArray: {
19
31
  id: string;
@@ -21,6 +33,12 @@ export declare const fields: {
21
33
  description: string;
22
34
  type: FieldType.STRING_ARRAY;
23
35
  required: true;
36
+ options: {
37
+ dropdownOptions: {
38
+ label: string;
39
+ value: string;
40
+ }[];
41
+ };
24
42
  };
25
43
  anotherNumericArray: {
26
44
  id: string;
@@ -28,6 +46,12 @@ export declare const fields: {
28
46
  description: string;
29
47
  type: FieldType.NUMERIC_ARRAY;
30
48
  required: true;
49
+ options: {
50
+ dropdownOptions: {
51
+ label: string;
52
+ value: number;
53
+ }[];
54
+ };
31
55
  };
32
56
  };
33
57
  export declare const FieldsValidationSchema: z.ZodObject<{
@@ -10,6 +10,22 @@ exports.fields = {
10
10
  description: 'Select a data point or enter comma separated strings.',
11
11
  type: extensions_core_1.FieldType.STRING_ARRAY,
12
12
  required: true,
13
+ options: {
14
+ dropdownOptions: [
15
+ {
16
+ value: 'one',
17
+ label: 'One',
18
+ },
19
+ {
20
+ value: 'two',
21
+ label: 'Two',
22
+ },
23
+ {
24
+ value: 'three',
25
+ label: 'Three',
26
+ },
27
+ ],
28
+ },
13
29
  },
14
30
  numericArray: {
15
31
  id: 'numericArray',
@@ -17,6 +33,13 @@ exports.fields = {
17
33
  description: 'Select a data point or enter comma separated numbers.',
18
34
  type: extensions_core_1.FieldType.NUMERIC_ARRAY,
19
35
  required: true,
36
+ options: {
37
+ dropdownOptions: [
38
+ { label: 'One', value: 1 },
39
+ { label: 'Two', value: 2 },
40
+ { label: 'Three', value: 3 },
41
+ ],
42
+ },
20
43
  },
21
44
  anotherStringArray: {
22
45
  id: 'anotherStringArray',
@@ -24,6 +47,12 @@ exports.fields = {
24
47
  description: 'Select a data point or enter comma separated strings.',
25
48
  type: extensions_core_1.FieldType.STRING_ARRAY,
26
49
  required: true,
50
+ options: {
51
+ dropdownOptions: [
52
+ { label: 'Option 1', value: 'option1' },
53
+ { label: 'Option 2', value: 'option2' },
54
+ ],
55
+ },
27
56
  },
28
57
  anotherNumericArray: {
29
58
  id: 'anotherNumericArray',
@@ -31,6 +60,12 @@ exports.fields = {
31
60
  description: 'Select a data point or enter comma separated numbers.',
32
61
  type: extensions_core_1.FieldType.NUMERIC_ARRAY,
33
62
  required: true,
63
+ options: {
64
+ dropdownOptions: [
65
+ { label: 'Option 1', value: 50 },
66
+ { label: 'Option 2', value: 51 },
67
+ ],
68
+ },
34
69
  },
35
70
  };
36
71
  exports.FieldsValidationSchema = zod_1.z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/collectData/v1/actions/arrayTest/config/fields.ts"],"names":[],"mappings":";;;AAAA,6BAAwC;AACxC,mEAAqE;AAExD,QAAA,MAAM,GAAG;IACpB,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI;KACf;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI;KACf;IACD,kBAAkB,EAAE;QAClB,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI;KACf;IACD,mBAAmB,EAAE;QACnB,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI;KACf;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC3C,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACjD,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CACD,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"}
1
+ {"version":3,"file":"fields.js","sourceRoot":"","sources":["../../../../../../../extensions/collectData/v1/actions/arrayTest/config/fields.ts"],"names":[],"mappings":";;;AAAA,6BAAwC;AACxC,mEAAqE;AAExD,QAAA,MAAM,GAAG;IACpB,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP,eAAe,EAAE;gBACf;oBACE,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,KAAK;iBACb;gBACD;oBACE,KAAK,EAAE,KAAK;oBACZ,KAAK,EAAE,KAAK;iBACb;gBACD;oBACE,KAAK,EAAE,OAAO;oBACd,KAAK,EAAE,OAAO;iBACf;aACF;SACF;KACF;IACD,YAAY,EAAE;QACZ,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP,eAAe,EAAE;gBACf,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC1B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE;gBAC1B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE;aAC7B;SACF;KACF;IACD,kBAAkB,EAAE;QAClB,EAAE,EAAE,oBAAoB;QACxB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,YAAY;QAC5B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP,eAAe,EAAE;gBACf,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;gBACvC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;aACxC;SACF;KACF;IACD,mBAAmB,EAAE;QACnB,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE,2BAAS,CAAC,aAAa;QAC7B,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE;YACP,eAAe,EAAE;gBACf,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;gBAChC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;aACjC;SACF;KACF;CAC8B,CAAA;AAEpB,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC1C,YAAY,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IAC3C,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;IACjD,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;CACD,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"}
@@ -1,2 +1,3 @@
1
1
  export { remoteSingleSelect } from './remoteSingleSelect';
2
+ export { arrayTest } from './arrayTest';
2
3
  export { collectMedication } from './collectMedication';
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.collectMedication = exports.remoteSingleSelect = void 0;
3
+ exports.collectMedication = exports.arrayTest = exports.remoteSingleSelect = void 0;
4
4
  var remoteSingleSelect_1 = require("./remoteSingleSelect");
5
5
  Object.defineProperty(exports, "remoteSingleSelect", { enumerable: true, get: function () { return remoteSingleSelect_1.remoteSingleSelect; } });
6
- // export { arrayTest } from './arrayTest'
6
+ var arrayTest_1 = require("./arrayTest");
7
+ Object.defineProperty(exports, "arrayTest", { enumerable: true, get: function () { return arrayTest_1.arrayTest; } });
7
8
  var collectMedication_1 = require("./collectMedication");
8
9
  Object.defineProperty(exports, "collectMedication", { enumerable: true, get: function () { return collectMedication_1.collectMedication; } });
9
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/collectData/v1/actions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,0CAA0C;AAC1C,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../extensions/collectData/v1/actions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AAAhD,wHAAA,kBAAkB,OAAA;AAC3B,yCAAuC;AAA9B,sGAAA,SAAS,OAAA;AAClB,yDAAuD;AAA9C,sHAAA,iBAAiB,OAAA"}
@@ -1,15 +1,12 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.createCalculationObservation = void 0;
7
4
  const extensions_core_1 = require("@awell-health/extensions-core");
8
5
  const config_1 = require("./config");
9
6
  const utils_1 = require("../../utils");
10
7
  const lodash_1 = require("lodash");
11
- const awellSdk_1 = __importDefault(require("../../../awell/v1/sdk/awellSdk"));
12
8
  const extractResourceId_1 = require("../../utils/extractResourceId/extractResourceId");
9
+ const awell_1 = require("../../../../src/lib/awell");
13
10
  exports.createCalculationObservation = {
14
11
  key: 'createCalculationObservation',
15
12
  category: extensions_core_1.Category.EHR_INTEGRATIONS,
@@ -18,51 +15,77 @@ exports.createCalculationObservation = {
18
15
  fields: config_1.fields,
19
16
  previewable: false,
20
17
  dataPoints: config_1.dataPoints,
21
- onActivityCreated: async (payload, onComplete, onError) => {
22
- var _a, _b, _c, _d;
23
- const { fields: input, medplumSdk, pathway, activity, settings: { awellApiKey, awellApiUrl }, } = await (0, utils_1.validateAndCreateSdkClient)({
18
+ onEvent: async ({ payload, onComplete, onError, helpers }) => {
19
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
20
+ const { fields: input, medplumSdk, pathway, activity, } = await (0, utils_1.validateAndCreateSdkClient)({
24
21
  fieldsSchema: config_1.FieldsValidationSchema,
25
22
  payload,
26
23
  });
27
- if ((0, lodash_1.isEmpty)(awellApiKey) || (0, lodash_1.isEmpty)(awellApiUrl))
28
- throw new Error('Please provide the Awell API key and Awell API URL in the settings of the Medplum extension to use this action.');
29
- const awellSdk = new awellSdk_1.default({
30
- apiUrl: awellApiUrl !== null && awellApiUrl !== void 0 ? awellApiUrl : '',
31
- apiKey: awellApiKey !== null && awellApiKey !== void 0 ? awellApiKey : '',
32
- });
33
- const activities = await awellSdk.getPathwayActivities({
34
- pathway_id: pathway.id,
35
- });
36
- const currentActivity = activities.find((a) => a.id === activity.id);
37
- if ((0, lodash_1.isNil)(currentActivity))
38
- throw new Error('Cannot find the current activity');
39
- const currentStepId = (_a = currentActivity.context) === null || _a === void 0 ? void 0 : _a.step_id;
40
- if ((0, lodash_1.isNil)(currentStepId))
41
- throw new Error('Could not find step ID of the current activity');
42
- const activitiesInCurrentStep = activities.filter((a) => {
43
- var _a;
44
- return ((_a = a.context) === null || _a === void 0 ? void 0 : _a.step_id) === currentStepId &&
45
- a.status === 'DONE' &&
46
- a.date <= currentActivity.date;
47
- });
48
- // Grab the most recent calculation activity
49
- const calculationActivityToPushToMedplum = activitiesInCurrentStep.filter((a) => a.object.type === 'CALCULATION')[0];
50
- if ((0, lodash_1.isNil)(calculationActivityToPushToMedplum))
51
- throw new Error('No calculation action found in the current step to push to Medplum');
52
- const calculationResults = await awellSdk.getCalculationResults({
53
- pathway_id: pathway.id,
54
- activity_id: calculationActivityToPushToMedplum.id,
24
+ const awellSdk = await helpers.awellSdk();
25
+ let latestCalculationActivity;
26
+ try {
27
+ const res = await (0, awell_1.getLastCalculationActivityInCurrentStep)({
28
+ awellSdk,
29
+ pathwayId: pathway.id,
30
+ currentActivityId: activity.id,
31
+ });
32
+ if ((0, lodash_1.isNil)(res)) {
33
+ throw new Error('No calculation activity found in the current step');
34
+ }
35
+ latestCalculationActivity = res;
36
+ }
37
+ catch (error) {
38
+ const err = error;
39
+ await onError({
40
+ events: [
41
+ (0, awell_1.addActivityEventLog)({
42
+ message: err.message,
43
+ }),
44
+ ],
45
+ });
46
+ return;
47
+ }
48
+ const calculationResultsResponse = await awellSdk.orchestration.query({
49
+ calculationResults: {
50
+ __args: {
51
+ pathway_id: pathway.id,
52
+ activity_id: latestCalculationActivity.id,
53
+ },
54
+ success: true,
55
+ result: {
56
+ __scalar: true,
57
+ },
58
+ },
55
59
  });
56
60
  const derivedFrom = !(0, lodash_1.isEmpty)(input.questionnaireResponseId)
57
61
  ? {
58
- reference: `QuestionnaireResponse/${(_c = (0, extractResourceId_1.extractResourceId)((_b = input.questionnaireResponseId) !== null && _b !== void 0 ? _b : '', 'QuestionnaireResponse')) !== null && _c !== void 0 ? _c : 'undefined'}`,
62
+ reference: `QuestionnaireResponse/${(_b = (0, extractResourceId_1.extractResourceId)((_a = input.questionnaireResponseId) !== null && _a !== void 0 ? _a : '', 'QuestionnaireResponse')) !== null && _b !== void 0 ? _b : 'undefined'}`,
59
63
  }
60
64
  : null;
65
+ /**
66
+ * We currently only support one result per calculation activity so
67
+ * we use an imperfect heuristic to just get the first result of the calculation
68
+ */
69
+ const score = (_d = (_c = calculationResultsResponse.calculationResults) === null || _c === void 0 ? void 0 : _c.result[0]) === null || _d === void 0 ? void 0 : _d.value;
70
+ const isValidScore = !(0, lodash_1.isNil)(score) && !isNaN(Number(score)) && !(0, lodash_1.isEmpty)(score);
71
+ const scoreResult = isValidScore
72
+ ? { valueQuantity: { value: Number(score) } }
73
+ : {
74
+ dataAbsentReason: {
75
+ coding: [
76
+ {
77
+ system: 'http://hl7.org/fhir/data-absent-reason',
78
+ code: 'not-performed',
79
+ display: 'Not Performed',
80
+ },
81
+ ],
82
+ },
83
+ };
61
84
  const res = await medplumSdk.createResource({
62
85
  resourceType: 'Observation',
63
86
  status: 'final',
64
87
  code: {
65
- text: calculationActivityToPushToMedplum.object.name,
88
+ text: (_f = (_e = latestCalculationActivity === null || latestCalculationActivity === void 0 ? void 0 : latestCalculationActivity.object) === null || _e === void 0 ? void 0 : _e.name) !== null && _f !== void 0 ? _f : 'Unknown',
66
89
  },
67
90
  category: [
68
91
  {
@@ -73,11 +96,11 @@ exports.createCalculationObservation = {
73
96
  display: 'Survey',
74
97
  },
75
98
  ],
76
- text: calculationActivityToPushToMedplum.object.name,
99
+ text: (_h = (_g = latestCalculationActivity === null || latestCalculationActivity === void 0 ? void 0 : latestCalculationActivity.object) === null || _g === void 0 ? void 0 : _g.name) !== null && _h !== void 0 ? _h : 'Unknown',
77
100
  },
78
101
  ],
79
102
  subject: {
80
- reference: `Patient/${(_d = (0, extractResourceId_1.extractResourceId)(input.patientId, 'Patient')) !== null && _d !== void 0 ? _d : 'undefined'}`,
103
+ reference: `Patient/${(_j = (0, extractResourceId_1.extractResourceId)(input.patientId, 'Patient')) !== null && _j !== void 0 ? _j : 'undefined'}`,
81
104
  },
82
105
  performer: [
83
106
  {
@@ -89,9 +112,7 @@ exports.createCalculationObservation = {
89
112
  },
90
113
  ],
91
114
  derivedFrom: [...(derivedFrom != null ? [derivedFrom] : [])],
92
- valueQuantity: {
93
- value: Number(calculationResults[0].value),
94
- },
115
+ ...scoreResult,
95
116
  });
96
117
  await onComplete({
97
118
  data_points: {
@@ -1 +1 @@
1
- {"version":3,"file":"createCalculationObservation.js","sourceRoot":"","sources":["../../../../../extensions/medplum/actions/createCalculationObservation/createCalculationObservation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createCalculationObservation.js","sourceRoot":"","sources":["../../../../../extensions/medplum/actions/createCalculationObservation/createCalculationObservation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from './submitQuestionnaireResponse.mocks';
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./AwellFormResponseToFhirQuestionnaireResponseItems"), exports);
17
+ __exportStar(require("./submitQuestionnaireResponse.mocks"), exports);
18
18
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../extensions/medplum/actions/submitQuestionnaireResponse/__testdata__/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAmD"}
@@ -0,0 +1,38 @@
1
+ export declare const simpleFormMockResponse: {
2
+ success: true;
3
+ form: {
4
+ id: string;
5
+ definition_id: string;
6
+ title: string;
7
+ release_id: string;
8
+ key: string;
9
+ metadata: string;
10
+ questions: {
11
+ id: string;
12
+ definition_id: string;
13
+ title: string;
14
+ key: string;
15
+ dataPointValueType: "NUMBER";
16
+ questionType: "MULTIPLE_CHOICE";
17
+ userQuestionType: "MULTIPLE_CHOICE";
18
+ options: {
19
+ id: string;
20
+ value: number;
21
+ value_string: string;
22
+ label: string;
23
+ __typename: "Option";
24
+ }[];
25
+ }[];
26
+ };
27
+ };
28
+ export declare const simpleFormResponseMockResponse: {
29
+ success: true;
30
+ response: {
31
+ answers: {
32
+ question_id: string;
33
+ value: string;
34
+ label: string;
35
+ value_type: "NUMBER";
36
+ }[];
37
+ };
38
+ };
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.simpleFormResponseMockResponse = exports.simpleFormMockResponse = void 0;
4
+ exports.simpleFormMockResponse = {
5
+ success: true,
6
+ form: {
7
+ id: 'form-published-id',
8
+ definition_id: 'form-definition-id',
9
+ title: 'Simple form',
10
+ release_id: 'form-release-id',
11
+ key: 'simple-form',
12
+ metadata: '{"form": "metadata"}',
13
+ questions: [
14
+ {
15
+ id: 'question-id',
16
+ definition_id: 'question-definition-id',
17
+ title: 'Single select (number)',
18
+ key: 'singleSelectNumber',
19
+ dataPointValueType: 'NUMBER',
20
+ questionType: 'MULTIPLE_CHOICE',
21
+ userQuestionType: 'MULTIPLE_CHOICE',
22
+ options: [
23
+ {
24
+ id: 'zOTvuy0usHkb',
25
+ value: 0,
26
+ value_string: '0',
27
+ label: 'Option 1',
28
+ __typename: 'Option',
29
+ },
30
+ {
31
+ id: 'q6jRNHKATieI',
32
+ value: 1,
33
+ value_string: '1',
34
+ label: 'Option 2',
35
+ __typename: 'Option',
36
+ },
37
+ {
38
+ id: 'vvMBtwpHl0o5',
39
+ value: 2,
40
+ value_string: '2',
41
+ label: 'Option 3',
42
+ __typename: 'Option',
43
+ },
44
+ ],
45
+ },
46
+ ],
47
+ },
48
+ };
49
+ exports.simpleFormResponseMockResponse = {
50
+ success: true,
51
+ response: {
52
+ answers: [
53
+ {
54
+ question_id: 'question-id',
55
+ value: '1',
56
+ label: 'Option 2',
57
+ value_type: 'NUMBER',
58
+ },
59
+ ],
60
+ },
61
+ };
62
+ //# sourceMappingURL=submitQuestionnaireResponse.mocks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submitQuestionnaireResponse.mocks.js","sourceRoot":"","sources":["../../../../../../extensions/medplum/actions/submitQuestionnaireResponse/__testdata__/submitQuestionnaireResponse.mocks.ts"],"names":[],"mappings":";;;AAMa,QAAA,sBAAsB,GAAG;IACpC,OAAO,EAAE,IAAI;IACb,IAAI,EAAE;QACJ,EAAE,EAAE,mBAAmB;QACvB,aAAa,EAAE,oBAAoB;QACnC,KAAK,EAAE,aAAa;QACpB,UAAU,EAAE,iBAAiB;QAC7B,GAAG,EAAE,aAAa;QAClB,QAAQ,EAAE,sBAAsB;QAChC,SAAS,EAAE;YACT;gBACE,EAAE,EAAE,aAAa;gBACjB,aAAa,EAAE,wBAAwB;gBACvC,KAAK,EAAE,wBAAwB;gBAC/B,GAAG,EAAE,oBAAoB;gBACzB,kBAAkB,EAAE,QAAQ;gBAC5B,YAAY,EAAE,iBAAiB;gBAC/B,gBAAgB,EAAE,iBAAiB;gBACnC,OAAO,EAAE;oBACP;wBACE,EAAE,EAAE,cAAc;wBAClB,KAAK,EAAE,CAAC;wBACR,YAAY,EAAE,GAAG;wBACjB,KAAK,EAAE,UAAU;wBACjB,UAAU,EAAE,QAAQ;qBACrB;oBACD;wBACE,EAAE,EAAE,cAAc;wBAClB,KAAK,EAAE,CAAC;wBACR,YAAY,EAAE,GAAG;wBACjB,KAAK,EAAE,UAAU;wBACjB,UAAU,EAAE,QAAQ;qBACrB;oBACD;wBACE,EAAE,EAAE,cAAc;wBAClB,KAAK,EAAE,CAAC;wBACR,YAAY,EAAE,GAAG;wBACjB,KAAK,EAAE,UAAU;wBACjB,UAAU,EAAE,QAAQ;qBACrB;iBACF;aACF;SACF;KACF;CACiC,CAAA;AAEvB,QAAA,8BAA8B,GAAG;IAC5C,OAAO,EAAE,IAAI;IACb,QAAQ,EAAE;QACR,OAAO,EAAE;YACP;gBACE,WAAW,EAAE,aAAa;gBAC1B,KAAK,EAAE,GAAG;gBACV,KAAK,EAAE,UAAU;gBACjB,UAAU,EAAE,QAAQ;aACrB;SACF;KACF;CACyC,CAAA"}
@@ -1,16 +1,11 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.submitQuestionnaireResponse = void 0;
7
4
  const extensions_core_1 = require("@awell-health/extensions-core");
8
5
  const config_1 = require("./config");
9
6
  const utils_1 = require("../../utils");
10
- const lodash_1 = require("lodash");
11
- const awellSdk_1 = __importDefault(require("../../../awell/v1/sdk/awellSdk"));
12
- const transformers_1 = require("../../../../src/lib/fhir/transformers");
13
7
  const extractResourceId_1 = require("../../utils/extractResourceId/extractResourceId");
8
+ const awell_1 = require("../../../../src/lib/awell");
14
9
  exports.submitQuestionnaireResponse = {
15
10
  key: 'submitQuestionnaireResponse',
16
11
  category: extensions_core_1.Category.EHR_INTEGRATIONS,
@@ -19,58 +14,45 @@ exports.submitQuestionnaireResponse = {
19
14
  fields: config_1.fields,
20
15
  previewable: false,
21
16
  dataPoints: config_1.dataPoints,
22
- onActivityCreated: async (payload, onComplete, onError) => {
23
- var _a, _b;
24
- const { fields: input, medplumSdk, pathway, activity, settings: { awellApiKey, awellApiUrl }, } = await (0, utils_1.validateAndCreateSdkClient)({
17
+ onEvent: async ({ payload, onComplete, onError, helpers }) => {
18
+ var _a;
19
+ const { fields: input, medplumSdk, pathway, activity, } = await (0, utils_1.validateAndCreateSdkClient)({
25
20
  fieldsSchema: config_1.FieldsValidationSchema,
26
21
  payload,
27
22
  });
28
- if ((0, lodash_1.isEmpty)(awellApiKey) || (0, lodash_1.isEmpty)(awellApiUrl))
29
- throw new Error('Please provide the Awell API key and Awell API URL in the settings of the Medplum extension to use this action.');
30
- const awellSdk = new awellSdk_1.default({
31
- apiUrl: awellApiUrl !== null && awellApiUrl !== void 0 ? awellApiUrl : '',
32
- apiKey: awellApiKey !== null && awellApiKey !== void 0 ? awellApiKey : '',
33
- });
34
- const activities = await awellSdk.getPathwayActivities({
35
- pathway_id: pathway.id,
36
- });
37
- const currentActivity = activities.find((a) => a.id === activity.id);
38
- if ((0, lodash_1.isNil)(currentActivity))
39
- throw new Error('Cannot find the current activity');
40
- const currentStepId = (_a = currentActivity.context) === null || _a === void 0 ? void 0 : _a.step_id;
41
- if ((0, lodash_1.isNil)(currentStepId))
42
- throw new Error('Could not find step ID of the current activity');
43
- const filteredFormActivities = activities.filter((a) => {
44
- var _a;
45
- return ((_a = a.context) === null || _a === void 0 ? void 0 : _a.step_id) === currentStepId &&
46
- a.object.type === 'FORM' &&
47
- a.status === 'DONE' &&
48
- a.date <= currentActivity.date;
49
- });
50
- // Grab the most recent form activity
51
- const formActivityToPushToMedplum = filteredFormActivities[0];
52
- if ((0, lodash_1.isNil)(formActivityToPushToMedplum))
53
- throw new Error('No form action found in the current step to push to Medplum');
54
- const formDefinition = await awellSdk.getForm({
55
- id: formActivityToPushToMedplum.object.id,
56
- });
57
- const formResponse = await awellSdk.getFormResponse({
58
- pathway_id: pathway.id,
59
- activity_id: formActivityToPushToMedplum.id,
23
+ const awellSdk = await helpers.awellSdk();
24
+ let formDefinition;
25
+ let formResponse;
26
+ try {
27
+ const formRes = await (0, awell_1.getLatestFormInCurrentStep)({
28
+ awellSdk,
29
+ pathwayId: pathway.id,
30
+ activityId: activity.id,
31
+ });
32
+ formDefinition = formRes.formDefinition;
33
+ formResponse = formRes.formResponse;
34
+ }
35
+ catch (error) {
36
+ const err = error;
37
+ await onError({
38
+ events: [(0, awell_1.addActivityEventLog)({ message: err.message })],
39
+ });
40
+ return;
41
+ }
42
+ const FhirQuestionnaire = awellSdk.utils.fhir.AwellFormToFhirQuestionnaire(formDefinition);
43
+ const FhirQuestionnaireResponse = awellSdk.utils.fhir.AwellFormResponseToFhirQuestionnaireResponseItems({
44
+ awellFormDefinition: formDefinition,
45
+ awellFormResponse: formResponse,
60
46
  });
61
- const FhirQuestionnaire = (0, transformers_1.AwellFormToFhirQuestionnaire)(formDefinition);
62
47
  const QuestionnaireResource = await medplumSdk.createResourceIfNoneExist(FhirQuestionnaire, `identifier=${formDefinition.definition_id}/published/${formDefinition.id}`);
63
48
  const res = await medplumSdk.createResource({
64
49
  resourceType: 'QuestionnaireResponse',
65
50
  questionnaire: `Questionnaire/${String(QuestionnaireResource.id)}`,
66
51
  status: 'completed',
67
52
  subject: {
68
- reference: `Patient/${(_b = (0, extractResourceId_1.extractResourceId)(input.patientId, 'Patient')) !== null && _b !== void 0 ? _b : 'undefined'}`,
53
+ reference: `Patient/${(_a = (0, extractResourceId_1.extractResourceId)(input.patientId, 'Patient')) !== null && _a !== void 0 ? _a : 'undefined'}`,
69
54
  },
70
- item: (0, transformers_1.AwellFormResponseToFhirQuestionnaireResponseItems)({
71
- awellFormDefinition: formDefinition,
72
- awellFormResponse: formResponse,
73
- }),
55
+ item: FhirQuestionnaireResponse,
74
56
  });
75
57
  await onComplete({
76
58
  data_points: {
@@ -1 +1 @@
1
- {"version":3,"file":"submitQuestionnaireResponse.js","sourceRoot":"","sources":["../../../../../extensions/medplum/actions/submitQuestionnaireResponse/submitQuestionnaireResponse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"submitQuestionnaireResponse.js","sourceRoot":"","sources":["../../../../../extensions/medplum/actions/submitQuestionnaireResponse/submitQuestionnaireResponse.ts"],"names":[],"mappings":";;;AAAA,mEAAqE;AAErE,qCAAqE;AACrE,uCAAwD;AACxD,uFAAmF;AACnF,qDAGkC;AAGrB,QAAA,2BAA2B,GAIpC;IACF,GAAG,EAAE,6BAA6B;IAClC,QAAQ,EAAE,0BAAQ,CAAC,gBAAgB;IACnC,KAAK,EAAE,+BAA+B;IACtC,WAAW,EACT,+FAA+F;IACjG,MAAM,EAAN,eAAM;IACN,WAAW,EAAE,KAAK;IAClB,UAAU,EAAV,mBAAU;IACV,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,EAAiB,EAAE;;QAC1E,MAAM,EACJ,MAAM,EAAE,KAAK,EACb,UAAU,EACV,OAAO,EACP,QAAQ,GACT,GAAG,MAAM,IAAA,kCAA0B,EAAC;YACnC,YAAY,EAAE,+BAAsB;YACpC,OAAO;SACR,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;QAEzC,IAAI,cAAoB,CAAA;QACxB,IAAI,YAA0B,CAAA;QAE9B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAA,kCAA0B,EAAC;gBAC/C,QAAQ;gBACR,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,UAAU,EAAE,QAAQ,CAAC,EAAE;aACxB,CAAC,CAAA;YAEF,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;YACvC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,KAAc,CAAA;YAC1B,MAAM,OAAO,CAAC;gBACZ,MAAM,EAAE,CAAC,IAAA,2BAAmB,EAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;aACxD,CAAC,CAAA;YACF,OAAM;QACR,CAAC;QAED,MAAM,iBAAiB,GACrB,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,CAAA;QAClE,MAAM,yBAAyB,GAC7B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC;YACpE,mBAAmB,EAAE,cAAc;YACnC,iBAAiB,EAAE,YAAY;SAChC,CAAC,CAAA;QAEJ,MAAM,qBAAqB,GAAG,MAAM,UAAU,CAAC,yBAAyB,CACtE,iBAAiB,EACjB,cAAc,cAAc,CAAC,aAAa,cAAc,cAAc,CAAC,EAAE,EAAE,CAC5E,CAAA;QAED,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,cAAc,CAAC;YAC1C,YAAY,EAAE,uBAAuB;YACrC,aAAa,EAAE,iBAAiB,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,EAAE;YAClE,MAAM,EAAE,WAAW;YACnB,OAAO,EAAE;gBACP,SAAS,EAAE,WACT,MAAA,IAAA,qCAAiB,EAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,mCAAI,WACnD,EAAE;aACH;YACD,IAAI,EAAE,yBAAyB;SAChC,CAAC,CAAA;QAEF,MAAM,UAAU,CAAC;YACf,WAAW,EAAE;gBACX,4DAA4D;gBAC5D,wBAAwB,EAAE,GAAG,CAAC,EAAE;aACjC;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -14,34 +14,14 @@ export declare const settings: {
14
14
  required: true;
15
15
  description: string;
16
16
  };
17
- awellApiUrl: {
18
- key: string;
19
- label: string;
20
- obfuscated: false;
21
- required: false;
22
- description: string;
23
- };
24
- awellApiKey: {
25
- key: string;
26
- label: string;
27
- obfuscated: true;
28
- required: false;
29
- description: string;
30
- };
31
17
  };
32
18
  export declare const SettingsValidationSchema: z.ZodObject<{
33
19
  clientId: z.ZodString;
34
20
  clientSecret: z.ZodString;
35
- awellApiKey: z.ZodOptional<z.ZodString>;
36
- awellApiUrl: z.ZodOptional<z.ZodString>;
37
21
  }, "strip", z.ZodTypeAny, {
38
22
  clientId: string;
39
23
  clientSecret: string;
40
- awellApiUrl?: string | undefined;
41
- awellApiKey?: string | undefined;
42
24
  }, {
43
25
  clientId: string;
44
26
  clientSecret: string;
45
- awellApiUrl?: string | undefined;
46
- awellApiKey?: string | undefined;
47
27
  }>;