@pegasimed.com/shared-tools 1.0.110 → 1.0.112

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.
@@ -12,6 +12,7 @@ export * from './getAllJsonKeyAndValues';
12
12
  export * from './IntegrationLog';
13
13
  export * from './intervalWithRetries';
14
14
  export * from './newValueInstance';
15
+ export * from './numbers';
15
16
  export * from './parseNumber';
16
17
  export * from './removeNullAndUndefinedValues';
17
18
  export * from './sendSlackMessage';
@@ -19,3 +20,4 @@ export * from './validateArrayValues';
19
20
  export * from './validateIdentifierInput';
20
21
  export * from './validateObjectValues';
21
22
  export * from './validateStringChartAccepted';
23
+ export * from './validTime';
@@ -28,6 +28,7 @@ __exportStar(require("./getAllJsonKeyAndValues"), exports);
28
28
  __exportStar(require("./IntegrationLog"), exports);
29
29
  __exportStar(require("./intervalWithRetries"), exports);
30
30
  __exportStar(require("./newValueInstance"), exports);
31
+ __exportStar(require("./numbers"), exports);
31
32
  __exportStar(require("./parseNumber"), exports);
32
33
  __exportStar(require("./removeNullAndUndefinedValues"), exports);
33
34
  __exportStar(require("./sendSlackMessage"), exports);
@@ -35,4 +36,5 @@ __exportStar(require("./validateArrayValues"), exports);
35
36
  __exportStar(require("./validateIdentifierInput"), exports);
36
37
  __exportStar(require("./validateObjectValues"), exports);
37
38
  __exportStar(require("./validateStringChartAccepted"), exports);
39
+ __exportStar(require("./validTime"), exports);
38
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,kDAAgC;AAChC,4CAA0B;AAC1B,oDAAkC;AAClC,wDAAsC;AACtC,0DAAwC;AACxC,yCAAuB;AACvB,0DAAwC;AACxC,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,mDAAiC;AACjC,wDAAsC;AACtC,qDAAmC;AACnC,gDAA8B;AAC9B,iEAA+C;AAC/C,qDAAmC;AACnC,wDAAsC;AACtC,4DAA0C;AAC1C,yDAAuC;AACvC,gEAA8C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,kDAAgC;AAChC,4CAA0B;AAC1B,oDAAkC;AAClC,wDAAsC;AACtC,0DAAwC;AACxC,yCAAuB;AACvB,0DAAwC;AACxC,gEAA8C;AAC9C,uDAAqC;AACrC,2DAAyC;AACzC,mDAAiC;AACjC,wDAAsC;AACtC,qDAAmC;AACnC,4CAA0B;AAC1B,gDAA8B;AAC9B,iEAA+C;AAC/C,qDAAmC;AACnC,wDAAsC;AACtC,4DAA0C;AAC1C,yDAAuC;AACvC,gEAA8C;AAC9C,8CAA4B"}
@@ -0,0 +1 @@
1
+ export declare const getNumberOfDecimals: (number: number, decimals: number) => number;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getNumberOfDecimals = void 0;
4
+ const getNumberOfDecimals = (number, decimals) => {
5
+ if (!Number.isFinite(number)) {
6
+ throw new Error('Input must be a finite number');
7
+ }
8
+ const factor = Math.pow(10, decimals);
9
+ return Math.trunc(number * factor) / factor;
10
+ };
11
+ exports.getNumberOfDecimals = getNumberOfDecimals;
12
+ //# sourceMappingURL=numbers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../src/utils/numbers.ts"],"names":[],"mappings":";;;AAAO,MAAM,mBAAmB,GAAG,CAAC,MAAc,EAAE,QAAgB,EAAU,EAAE;IAC9E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;AAC9C,CAAC,CAAC;AAPW,QAAA,mBAAmB,uBAO9B"}
@@ -0,0 +1,2 @@
1
+ import { IPatient, IObservation, IQuestionnaire, IQuestionnaireResponse } from '../../interfaces';
2
+ export declare const getFinalMessage: (observations: IObservation[], questionnaire: IQuestionnaire, questionnaireResponse: IQuestionnaireResponse, patient: IPatient) => Promise<string>;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getFinalMessage = void 0;
13
+ const custom_variable_resolvers_1 = require("../../custom-variable-resolvers");
14
+ const documents_1 = require("../documents");
15
+ const numbers_1 = require("../numbers");
16
+ const getFinalMessage = (observations, questionnaire, questionnaireResponse, patient) => __awaiter(void 0, void 0, void 0, function* () {
17
+ var _a, _b, _c;
18
+ const defaultMsg = [
19
+ `¡Gracias por responder el formulario, ${(0, documents_1.getFullName)(patient, 'usual').toUpperCase()}!.`,
20
+ ...observations.map((obs) => {
21
+ const observationValue = obs.value;
22
+ return [
23
+ `Basándonos en las respuestas anteriores, para el resultado ${observationValue.name}, su puntuación es (${(0, numbers_1.getNumberOfDecimals)(observationValue.calculation, observationValue.decimals || 0)}) lo cual determina que su resultado final es:`,
24
+ `${observationValue.finalResult}`,
25
+ ].join('<br>');
26
+ }),
27
+ ,
28
+ ].join('\n');
29
+ const finalMsgToShow = [];
30
+ for (const observation of observations) {
31
+ const observationValue = observation.value;
32
+ if (!((_c = (_b = (_a = observationValue === null || observationValue === void 0 ? void 0 : observationValue.valueCodeableConcept) === null || _a === void 0 ? void 0 : _a.value) === null || _b === void 0 ? void 0 : _b.messagesToShow) === null || _c === void 0 ? void 0 : _c.length)) {
33
+ continue;
34
+ }
35
+ const messagesToShow = observationValue.valueCodeableConcept.value.messagesToShow;
36
+ for (const msgToShow of messagesToShow) {
37
+ const condition = (msgToShow === null || msgToShow === void 0 ? void 0 : msgToShow.condition) || '';
38
+ let response;
39
+ const dataToEvaluate = Object.assign(Object.assign({}, observation), { __OPTIONS__: {
40
+ patient: patient,
41
+ questionnaire: questionnaire,
42
+ questionnaireResponse: questionnaireResponse,
43
+ } });
44
+ try {
45
+ response = (yield (0, custom_variable_resolvers_1.executeFormula)(condition, dataToEvaluate, null));
46
+ }
47
+ catch (_d) {
48
+ response = false;
49
+ }
50
+ if (response) {
51
+ const msg = yield (0, custom_variable_resolvers_1.replaceAllVariables)((msgToShow === null || msgToShow === void 0 ? void 0 : msgToShow.message) || '', dataToEvaluate, null, null, {
52
+ enabledAutoStringCommas: false,
53
+ });
54
+ finalMsgToShow.push(msg);
55
+ }
56
+ }
57
+ }
58
+ if (finalMsgToShow.length) {
59
+ return finalMsgToShow.join('\n');
60
+ }
61
+ return defaultMsg;
62
+ });
63
+ exports.getFinalMessage = getFinalMessage;
64
+ //# sourceMappingURL=getFinalMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFinalMessages.js","sourceRoot":"","sources":["../../../src/utils/questionnaire/getFinalMessages.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+EAAsF;AAStF,4CAA2C;AAC3C,wCAAiD;AAE1C,MAAM,eAAe,GAAG,CAC7B,YAA4B,EAC5B,aAA6B,EAC7B,qBAA6C,EAC7C,OAAiB,EACA,EAAE;;IACnB,MAAM,UAAU,GAAG;QACjB,yCAAyC,IAAA,uBAAW,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,IAAI;QACxF,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC1B,MAAM,gBAAgB,GAAsB,GAAG,CAAC,KAA0B,CAAC;YAC3E,OAAO;gBACL,8DACE,gBAAgB,CAAC,IACnB,uBAAuB,IAAA,6BAAmB,EACxC,gBAAgB,CAAC,WAAqB,EACtC,gBAAgB,CAAC,QAAQ,IAAI,CAAC,CAC/B,gDAAgD;gBACjD,GAAG,gBAAgB,CAAC,WAAW,EAAE;aAClC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjB,CAAC,CAAC;QACF,AADG;KAEJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,cAAc,GAAG,EAAE,CAAC;IAC1B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAA0B,CAAC;QAChE,IAAI,CAAC,CAAA,MAAA,MAAA,MAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,oBAAoB,0CAAE,KAAK,0CAAE,cAAc,0CAAE,MAAM,CAAA,EAAE,CAAC;YAC3E,SAAS;QACX,CAAC;QACD,MAAM,cAAc,GAClB,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,cAAc,CAAC;QAE7D,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,KAAI,EAAE,CAAC;YAC7C,IAAI,QAAiB,CAAC;YACtB,MAAM,cAAc,mCACf,WAAW,KACd,WAAW,EAAE;oBACX,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE,aAAa;oBAC5B,qBAAqB,EAAE,qBAAqB;iBAC7C,GACF,CAAC;YACF,IAAI,CAAC;gBACH,QAAQ,GAAG,CAAC,MAAM,IAAA,0CAAc,EAAC,SAAS,EAAE,cAAc,EAAE,IAAW,CAAC,CAAY,CAAC;YACvF,CAAC;YAAC,WAAM,CAAC;gBACP,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,MAAM,IAAA,+CAAmB,EAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,OAAO,KAAI,EAAE,EAAE,cAAc,EAAE,IAAW,EAAE,IAAW,EAAE;oBACxG,uBAAuB,EAAE,KAAK;iBAC/B,CAAC,CAAC;gBAEH,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC,CAAA,CAAC;AA/DW,QAAA,eAAe,mBA+D1B"}
@@ -1,4 +1,5 @@
1
1
  export * from './formulas';
2
+ export * from './getFinalMessages';
2
3
  export * from './observation';
3
4
  export * from './question';
4
5
  export * from './questionnaire';
@@ -15,6 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./formulas"), exports);
18
+ __exportStar(require("./getFinalMessages"), exports);
18
19
  __exportStar(require("./observation"), exports);
19
20
  __exportStar(require("./question"), exports);
20
21
  __exportStar(require("./questionnaire"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/questionnaire/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,kDAAgC;AAChC,0DAAwC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/questionnaire/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,qDAAmC;AACnC,gDAA8B;AAC9B,6CAA2B;AAC3B,kDAAgC;AAChC,0DAAwC"}
@@ -0,0 +1,12 @@
1
+ export interface IValidTime {
2
+ offset: number;
3
+ minHour: number;
4
+ maxHour: number;
5
+ whenSendType: 'time' | 'datetime';
6
+ jobTime: Date;
7
+ datetimeDay?: number;
8
+ datetimeStrict?: boolean;
9
+ datetimeDayweek?: number;
10
+ whenSendTimeValue?: string;
11
+ }
12
+ export declare const isValidTime: (job: IValidTime) => boolean;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidTime = void 0;
4
+ const constants_1 = require("../constants");
5
+ const date_1 = require("./date");
6
+ const parseNumber_1 = require("./parseNumber");
7
+ const isValidTime = (job) => {
8
+ const offset = (0, parseNumber_1.parseNumber)(job === null || job === void 0 ? void 0 : job.offset, 0);
9
+ const today = (0, date_1.parseDateWithOffset)(new Date(), offset);
10
+ if (!today) {
11
+ throw new Error('Invalid date');
12
+ }
13
+ const currentHour = today.getHours();
14
+ let timeValid = false;
15
+ let scheduledValid = false;
16
+ const minHour = (0, parseNumber_1.parseNumber)(job === null || job === void 0 ? void 0 : job.minHour, null);
17
+ const maxHour = (0, parseNumber_1.parseNumber)(job === null || job === void 0 ? void 0 : job.maxHour, null);
18
+ switch (job === null || job === void 0 ? void 0 : job.whenSendType) {
19
+ case constants_1.NOTIFICATION_MANAGER_SEND_TYPE.time:
20
+ const timeMiliseconds = (0, date_1.parseTimeToMiliseconds)((job === null || job === void 0 ? void 0 : job.whenSendTimeValue) || '') || 1;
21
+ const pendingLogTime = new Date((job === null || job === void 0 ? void 0 : job.jobTime) || new Date());
22
+ const scheduledTime = (0, date_1.parseDateWithOffset)(new Date(pendingLogTime.getTime() + timeMiliseconds), offset);
23
+ if (!scheduledTime) {
24
+ throw new Error('Invalid scheduled time');
25
+ }
26
+ if (scheduledTime.getTime() <= today.getTime()) {
27
+ timeValid = true;
28
+ }
29
+ break;
30
+ case constants_1.NOTIFICATION_MANAGER_SEND_TYPE.datetime:
31
+ const day = (0, parseNumber_1.parseNumber)(job === null || job === void 0 ? void 0 : job.datetimeDay, null);
32
+ const dayweek = (0, parseNumber_1.parseNumber)(job === null || job === void 0 ? void 0 : job.datetimeDayweek, null);
33
+ const isStrict = (job === null || job === void 0 ? void 0 : job.datetimeStrict) || false;
34
+ if (day !== null) {
35
+ const currentDay = today.getDate();
36
+ timeValid = isStrict ? day === currentDay : currentDay >= day;
37
+ }
38
+ else if (dayweek !== null) {
39
+ const currentDayWeek = today.getDay();
40
+ timeValid = dayweek === currentDayWeek;
41
+ }
42
+ break;
43
+ }
44
+ if (minHour !== null && maxHour !== null) {
45
+ scheduledValid = currentHour >= minHour && currentHour <= maxHour;
46
+ }
47
+ return timeValid && scheduledValid;
48
+ };
49
+ exports.isValidTime = isValidTime;
50
+ //# sourceMappingURL=validTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validTime.js","sourceRoot":"","sources":["../../src/utils/validTime.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pegasimed.com/shared-tools",
3
- "version": "1.0.110",
3
+ "version": "1.0.112",
4
4
  "description": "Pegasi shared tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",