@openhealth/oht-custom-parser-lib 0.1.11 → 0.1.12
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.
- package/dist/index.d.ts +11 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/service/auxiliaryFunctions.service.d.ts +19 -0
- package/dist/service/auxiliaryFunctions.service.js +64 -0
- package/dist/service/auxiliaryFunctions.service.js.map +1 -0
- package/dist/service/ohtMeasurementsExtractor.service.d.ts +31 -0
- package/dist/service/ohtMeasurementsExtractor.service.js +403 -0
- package/dist/service/ohtMeasurementsExtractor.service.js.map +1 -0
- package/dist/service/reportCreator.service.d.ts +8 -0
- package/dist/service/reportCreator.service.js +129 -0
- package/dist/service/reportCreator.service.js.map +1 -0
- package/dist/service/slackMessages.service.d.ts +9 -0
- package/dist/service/slackMessages.service.js +92 -0
- package/dist/service/slackMessages.service.js.map +1 -0
- package/dist/types/custom-parser.types.d.ts +56 -0
- package/dist/types/custom-parser.types.js +28 -0
- package/dist/types/custom-parser.types.js.map +1 -0
- package/dist/types/oht.types.d.ts +300 -0
- package/dist/types/oht.types.js +90 -0
- package/dist/types/oht.types.js.map +1 -0
- package/dist/types/slackMessages.types.d.ts +5 -0
- package/dist/types/slackMessages.types.js +3 -0
- package/dist/types/slackMessages.types.js.map +1 -0
- package/dist/util-ts/dataUtils.d.ts +3 -0
- package/dist/util-ts/dataUtils.js +19 -0
- package/dist/util-ts/dataUtils.js.map +1 -0
- package/dist/util-ts/googleStorageUtils.d.ts +3 -0
- package/dist/util-ts/googleStorageUtils.js +47 -0
- package/dist/util-ts/googleStorageUtils.js.map +1 -0
- package/dist/util-ts/pinoLogger.d.ts +12 -0
- package/dist/util-ts/pinoLogger.js +31 -0
- package/dist/util-ts/pinoLogger.js.map +1 -0
- package/dist/util-ts/regexUtils.d.ts +2 -0
- package/dist/util-ts/regexUtils.js +20 -0
- package/dist/util-ts/regexUtils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ohtMeasurementsExtractor.service.js","sourceRoot":"","sources":["../../service/ohtMeasurementsExtractor.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DataImportFileUpload } from "../types/oht.types";
|
|
2
|
+
declare function makeApiCallWithRetry(method: string, url: string, data: any, ohtCoreApiKey: string | undefined, retries?: number): Promise<import("axios").AxiosResponse<any, any>>;
|
|
3
|
+
declare function parseErrorObj(resp: any): {
|
|
4
|
+
message: any;
|
|
5
|
+
config: any;
|
|
6
|
+
};
|
|
7
|
+
declare function postDataImportFileUploadToCore(dataImportFileUpload: DataImportFileUpload, rejectedStatus: string | undefined, rejectReason: string | undefined, isReportParsedCorrectly: boolean, filename: string, ohtCoreApiKey: string): Promise<DataImportFileUpload | null>;
|
|
8
|
+
export { postDataImportFileUploadToCore, makeApiCallWithRetry, parseErrorObj };
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.postDataImportFileUploadToCore = postDataImportFileUploadToCore;
|
|
7
|
+
exports.makeApiCallWithRetry = makeApiCallWithRetry;
|
|
8
|
+
exports.parseErrorObj = parseErrorObj;
|
|
9
|
+
const https_1 = __importDefault(require("https"));
|
|
10
|
+
const bottleneck_1 = __importDefault(require("bottleneck"));
|
|
11
|
+
const axios_1 = __importDefault(require("axios"));
|
|
12
|
+
const oht_types_1 = require("../types/oht.types");
|
|
13
|
+
const pinoLogger_1 = __importDefault(require("../util-ts/pinoLogger"));
|
|
14
|
+
const logger = (0, pinoLogger_1.default)();
|
|
15
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
16
|
+
const auxiliaryFunctions_service_1 = require("./auxiliaryFunctions.service");
|
|
17
|
+
dotenv_1.default.config({ path: `.env.local` });
|
|
18
|
+
const OHT_CORE_URL = process.env.OHT_CORE_URL;
|
|
19
|
+
const httpsAgent = new https_1.default.Agent({
|
|
20
|
+
keepAlive: true, // Set keepAlive to true for persistent connections
|
|
21
|
+
timeout: 60000, // Increase the timeout to 60 seconds
|
|
22
|
+
secureProtocol: 'TLSv1_2_method',
|
|
23
|
+
});
|
|
24
|
+
// Initialize the rate limiter
|
|
25
|
+
const limiter = new bottleneck_1.default({
|
|
26
|
+
minTime: 200, // Time in ms between each task (e.g., 200ms)
|
|
27
|
+
maxConcurrent: 1, // Maximum number of tasks running at the same time
|
|
28
|
+
});
|
|
29
|
+
// Wrap the API call function
|
|
30
|
+
// Wrap the API call function
|
|
31
|
+
const makeApiCall = limiter.wrap(async function (method, url, data, ohtCoreApiKey) {
|
|
32
|
+
const authHeader = `Basic ${ohtCoreApiKey}`;
|
|
33
|
+
const headers = {
|
|
34
|
+
'Authorization': authHeader
|
|
35
|
+
};
|
|
36
|
+
return (0, axios_1.default)({
|
|
37
|
+
method,
|
|
38
|
+
url,
|
|
39
|
+
headers,
|
|
40
|
+
data,
|
|
41
|
+
httpsAgent,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
// Function to handle API calls with retries
|
|
45
|
+
async function makeApiCallWithRetry(method, url, data, ohtCoreApiKey, retries = 3) {
|
|
46
|
+
for (let attempt = 1; attempt <= retries; attempt++) {
|
|
47
|
+
try {
|
|
48
|
+
return await makeApiCall(method, url, data, ohtCoreApiKey);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
if (attempt === retries) {
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
logger.warn({ method, url }, `Attempt ${attempt} failed. Retrying...`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function parseErrorObj(resp) {
|
|
59
|
+
let error = {
|
|
60
|
+
message: resp.message, // Basic error message
|
|
61
|
+
// stack: resp.stack, // Stack trace for debugging
|
|
62
|
+
config: resp.config // Axios request config that led to the error
|
|
63
|
+
};
|
|
64
|
+
if (resp.response) {
|
|
65
|
+
error = {
|
|
66
|
+
...error,
|
|
67
|
+
// @ts-expect-error: adding response data and status to error message
|
|
68
|
+
responseData: resp.response.data,
|
|
69
|
+
status: resp.response.status,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
else if (resp.request) {
|
|
73
|
+
error = {
|
|
74
|
+
...error,
|
|
75
|
+
// @ts-expect-error: adding request to error message
|
|
76
|
+
error: resp.request
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return error;
|
|
80
|
+
}
|
|
81
|
+
async function postDataImportFileUploadToCore(dataImportFileUpload, rejectedStatus, rejectReason, isReportParsedCorrectly, filename, ohtCoreApiKey) {
|
|
82
|
+
let status = isReportParsedCorrectly ?
|
|
83
|
+
oht_types_1.DataImportFileUploadStatus.PROCESSED :
|
|
84
|
+
oht_types_1.DataImportFileUploadStatus.FOR_REVIEW;
|
|
85
|
+
const patchStatus = rejectedStatus ?? status;
|
|
86
|
+
const ohtCoreFileUploadUrl = `${OHT_CORE_URL}/v1/file-uploads/${dataImportFileUpload.id}`;
|
|
87
|
+
const ohtCoreFileUploadSetStatusUrl = `${OHT_CORE_URL}/v1/file-uploads/status/set/${dataImportFileUpload.id}`;
|
|
88
|
+
const ohtCoreDigitalizationUrl = `${OHT_CORE_URL}/v1/file-uploads/${dataImportFileUpload.id}/digitalization`;
|
|
89
|
+
try {
|
|
90
|
+
const initialResponse = await makeApiCallWithRetry('patch', ohtCoreFileUploadUrl, {
|
|
91
|
+
...dataImportFileUpload,
|
|
92
|
+
status: patchStatus,
|
|
93
|
+
rejectReason,
|
|
94
|
+
digitalization: {
|
|
95
|
+
...dataImportFileUpload.digitalization,
|
|
96
|
+
pipelineStep: `${dataImportFileUpload.notes}: Render Report`
|
|
97
|
+
},
|
|
98
|
+
}, ohtCoreApiKey);
|
|
99
|
+
logger.info({ response: initialResponse }, `Resp: PATCH status: ${patchStatus} ${ohtCoreFileUploadUrl}, filename: ${filename}`);
|
|
100
|
+
if (isReportParsedCorrectly && rejectedStatus === undefined) {
|
|
101
|
+
try {
|
|
102
|
+
return await (0, auxiliaryFunctions_service_1.postFileUploadSetStatus)(oht_types_1.DataImportFileUploadStatus.READY, dataImportFileUpload.id, filename, ohtCoreApiKey);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const errorDetail = parseErrorObj(error);
|
|
106
|
+
logger.error({ resp: errorDetail }, `ERROR: POST status: READY ${ohtCoreFileUploadSetStatusUrl}, filename: ${filename}`);
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
logger.warn({
|
|
111
|
+
isReportParsedCorrectly,
|
|
112
|
+
rejectedStatus,
|
|
113
|
+
initialResponse
|
|
114
|
+
}, `Report not parsed correctly fileUploadID ${dataImportFileUpload.id}, filename: ${filename}`);
|
|
115
|
+
return initialResponse?.data;
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
const errorDetail = parseErrorObj(error);
|
|
119
|
+
logger.error({ resp: errorDetail }, `ERROR: PATCH status: ${patchStatus} ${ohtCoreFileUploadUrl}, rejectedStatus: ${rejectedStatus} filename: ${filename}`);
|
|
120
|
+
// set digitalization error
|
|
121
|
+
await makeApiCallWithRetry('patch', ohtCoreDigitalizationUrl, {
|
|
122
|
+
status: oht_types_1.DigitizationStatus.ERROR,
|
|
123
|
+
pipelineStep: oht_types_1.PipelineStep.EXAM_DETAIL_EXTRACTION_STEP,
|
|
124
|
+
pipelineStepData: rejectReason,
|
|
125
|
+
}, ohtCoreApiKey);
|
|
126
|
+
return null; // TODO check which dataImportFileUpload should we return
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=reportCreator.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportCreator.service.js","sourceRoot":"","sources":["../../service/reportCreator.service.ts"],"names":[],"mappings":";;;;;AA+JQ,wEAA8B;AAAE,oDAAoB;AAAE,sCAAa;AA/J3E,kDAA0B;AAC1B,4DAAoC;AACpC,kDAA0B;AAC1B,kDAAsH;AAEtH,uEAA+C;AAC/C,MAAM,MAAM,GAAG,IAAA,oBAAU,GAAE,CAAC;AAE5B,oDAA4B;AAC5B,6EAAqE;AACrE,gBAAM,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;AAEpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AAE9C,MAAM,UAAU,GAAG,IAAI,eAAK,CAAC,KAAK,CAAC;IACjC,SAAS,EAAE,IAAI,EAAG,mDAAmD;IACrE,OAAO,EAAE,KAAK,EAAI,qCAAqC;IACvD,cAAc,EAAE,gBAAgB;CACjC,CAAC,CAAC;AAEH,8BAA8B;AAC9B,MAAM,OAAO,GAAG,IAAI,oBAAU,CAAC;IAC7B,OAAO,EAAE,GAAG,EAAG,6CAA6C;IAC5D,aAAa,EAAE,CAAC,EAAG,mDAAmD;CACvE,CAAC,CAAC;AAEH,6BAA6B;AAC7B,6BAA6B;AAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,MAAc,EAAE,GAAW,EAAE,IAAS,EAAE,aAAiC;IACxH,MAAM,UAAU,GAAG,SAAS,aAAa,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG;QACd,eAAe,EAAE,UAAU;KAC5B,CAAC;IAEF,OAAO,IAAA,eAAK,EAAC;QACX,MAAM;QACN,GAAG;QACH,OAAO;QACP,IAAI;QACJ,UAAU;KACX,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,4CAA4C;AAC5C,KAAK,UAAU,oBAAoB,CAAC,MAAc,EAAE,GAAW,EAAE,IAAS,EAAE,aAAiC,EAAE,UAAkB,CAAC;IAChI,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC;QACpD,IAAI,CAAC;YACH,OAAO,MAAM,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;gBACxB,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,GAAG,EAAC,EAAE,WAAW,OAAO,sBAAsB,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,IAAS;IAC9B,IAAI,KAAK,GAAG;QACV,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,sBAAsB;QAC7C,kDAAkD;QAClD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,6CAA6C;KAClE,CAAC;IACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,GAAG;YACN,GAAG,KAAK;YACR,qEAAqE;YACrE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;SAC7B,CAAC;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,KAAK,GAAG;YACN,GAAG,KAAK;YACR,oDAAoD;YACpD,KAAK,EAAE,IAAI,CAAC,OAAO;SACpB,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,8BAA8B,CAC3C,oBAA0C,EAC1C,cAAkC,EAClC,YAAgC,EAChC,uBAAgC,EAChC,QAAgB,EAChB,aAAqB;IAErB,IAAI,MAAM,GAAG,uBAAuB,CAAC,CAAC;QACpC,sCAA0B,CAAC,SAAS,CAAC,CAAC;QACtC,sCAA0B,CAAC,UAAU,CAAC;IAExC,MAAM,WAAW,GAAG,cAAc,IAAI,MAAM,CAAA;IAC5C,MAAM,oBAAoB,GAAG,GAAG,YAAY,oBAAoB,oBAAoB,CAAC,EAAE,EAAE,CAAC;IAC1F,MAAM,6BAA6B,GAAG,GAAG,YAAY,+BAA+B,oBAAoB,CAAC,EAAE,EAAE,CAAC;IAC9G,MAAM,wBAAwB,GAAG,GAAG,YAAY,oBAAoB,oBAAoB,CAAC,EAAE,iBAAiB,CAAA;IAE5G,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAChD,OAAO,EACP,oBAAoB,EACpB;YACE,GAAG,oBAAoB;YACvB,MAAM,EAAE,WAAW;YACnB,YAAY;YACZ,cAAc,EAAE;gBACd,GAAG,oBAAoB,CAAC,cAAc;gBACtC,YAAY,EAAE,GAAG,oBAAoB,CAAC,KAAK,iBAAiB;aAC7D;SACF,EACD,aAAa,CACd,CAAC;QACF,MAAM,CAAC,IAAI,CACT,EAAC,QAAQ,EAAE,eAAe,EAAC,EAC3B,uBAAuB,WAAW,IAAI,oBAAoB,eAAe,QAAQ,EAAE,CACpF,CAAC;QAEF,IAAI,uBAAuB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACH,OAAO,MAAM,IAAA,oDAAuB,EAClC,sCAA0B,CAAC,KAAK,EAChC,oBAAoB,CAAC,EAAE,EACvB,QAAQ,EACR,aAAa,CACd,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,CAAC,KAAK,CAAC,EAAC,IAAI,EAAE,WAAW,EAAC,EAAE,6BAA6B,6BAA6B,eAAe,QAAQ,EAAE,CAAC,CAAC;gBACvH,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACV,uBAAuB;YACvB,cAAc;YACd,eAAe;SAChB,EAAE,4CAA4C,oBAAoB,CAAC,EAAE,eAAe,QAAQ,EAAE,CAAC,CAAC;QAEjG,OAAO,eAAe,EAAE,IAAI,CAAA;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CACV,EAAC,IAAI,EAAE,WAAW,EAAC,EACnB,wBAAwB,WAAW,IAAI,oBAAoB,qBAAqB,cAAc,cAAc,QAAQ,EAAE,CACvH,CAAC;QACF,2BAA2B;QAC3B,MAAM,oBAAoB,CACxB,OAAO,EACP,wBAAwB,EACxB;YACE,MAAM,EAAE,8BAAkB,CAAC,KAAK;YAChC,YAAY,EAAE,wBAAY,CAAC,2BAA2B;YACtD,gBAAgB,EAAE,YAAY;SAC/B,EACD,aAAa,CACd,CAAC;QACF,OAAO,IAAI,CAAC,CAAC,yDAAyD;IACxE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SlackMessage } from "../types/slackMessages.types";
|
|
2
|
+
declare function aggregateMessages(slackMsgErrors: SlackMessage[]): string;
|
|
3
|
+
declare function getSlackFileIssueNotificationMessage(message: string, lab: string, fileUrl: string): Record<string, any>;
|
|
4
|
+
/**
|
|
5
|
+
* Sends a message to a Slack channel.
|
|
6
|
+
* @param {Record<string, any>} payload - The message payload to be sent.
|
|
7
|
+
*/
|
|
8
|
+
declare function sendMessageToSlack(payload: Record<string, any>): Promise<void>;
|
|
9
|
+
export { getSlackFileIssueNotificationMessage, sendMessageToSlack, aggregateMessages };
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getSlackFileIssueNotificationMessage = getSlackFileIssueNotificationMessage;
|
|
7
|
+
exports.sendMessageToSlack = sendMessageToSlack;
|
|
8
|
+
exports.aggregateMessages = aggregateMessages;
|
|
9
|
+
const axios_1 = __importDefault(require("axios"));
|
|
10
|
+
const dotenv_1 = __importDefault(require("dotenv"));
|
|
11
|
+
const pinoLogger_1 = __importDefault(require("../util-ts/pinoLogger"));
|
|
12
|
+
const logger = (0, pinoLogger_1.default)();
|
|
13
|
+
dotenv_1.default.config({ path: `.env.local` });
|
|
14
|
+
// Get the Slack webhook URL from the environment variable
|
|
15
|
+
const slackWebhookUrl = process.env.SLACK_WEBHOOK_URL;
|
|
16
|
+
function aggregateMessages(slackMsgErrors) {
|
|
17
|
+
const messageMap = slackMsgErrors.reduce((acc, { message, item }) => {
|
|
18
|
+
if (item) {
|
|
19
|
+
if (!acc[message]) {
|
|
20
|
+
acc[message] = [];
|
|
21
|
+
}
|
|
22
|
+
acc[message].push(item);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
if (!acc[message]) {
|
|
26
|
+
acc[message] = null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return acc;
|
|
30
|
+
}, {});
|
|
31
|
+
return Object.entries(messageMap)
|
|
32
|
+
.map(([message, items]) => {
|
|
33
|
+
if (items) {
|
|
34
|
+
const joinedItems = items.map(item => `-> ${item}`).join('\n');
|
|
35
|
+
return message.replace('[PLACEHOLDER]', `[\n${joinedItems}\n]`);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return message;
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
.join('\n');
|
|
42
|
+
}
|
|
43
|
+
// Function to generate a Slack notification message for file issues
|
|
44
|
+
function getSlackFileIssueNotificationMessage(message, lab, fileUrl) {
|
|
45
|
+
return {
|
|
46
|
+
blocks: [
|
|
47
|
+
{
|
|
48
|
+
type: 'section',
|
|
49
|
+
text: {
|
|
50
|
+
type: 'mrkdwn',
|
|
51
|
+
text: `*Issue processing file from <${lab}>*`,
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
type: 'section',
|
|
56
|
+
text: {
|
|
57
|
+
type: 'mrkdwn',
|
|
58
|
+
text: `*File:* <${fileUrl}|View File>`,
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'divider',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
type: 'section',
|
|
66
|
+
text: {
|
|
67
|
+
type: 'mrkdwn',
|
|
68
|
+
text: message,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Sends a message to a Slack channel.
|
|
76
|
+
* @param {Record<string, any>} payload - The message payload to be sent.
|
|
77
|
+
*/
|
|
78
|
+
async function sendMessageToSlack(payload) {
|
|
79
|
+
try {
|
|
80
|
+
const response = await axios_1.default.post(slackWebhookUrl, payload);
|
|
81
|
+
if (response.status === 200) {
|
|
82
|
+
logger.info('Message successfully sent to Slack.');
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
logger.info('Error sending message to Slack:', response.status, response.statusText);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
logger.warn('Error sending message to Slack:', error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=slackMessages.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slackMessages.service.js","sourceRoot":"","sources":["../../service/slackMessages.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { SlackMessage } from "./slackMessages.types";
|
|
2
|
+
import { PatientInfo } from "./oht.types";
|
|
3
|
+
export declare const unitSynonyms: Record<string, string>;
|
|
4
|
+
export interface ValueExtraction {
|
|
5
|
+
valuePosition?: string;
|
|
6
|
+
defaultValueExtractionFunc?: (value: string) => string | null;
|
|
7
|
+
}
|
|
8
|
+
export interface RangeExtractionResponse {
|
|
9
|
+
from: number | null;
|
|
10
|
+
to: number | null;
|
|
11
|
+
isRangeParsedCorrectly: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface RangeExtraction {
|
|
14
|
+
useInternalRange: boolean;
|
|
15
|
+
rangePosition?: string;
|
|
16
|
+
extractionRegex?: RegExp;
|
|
17
|
+
extractionFunc?: (exam: any, labToOhtMapper: LabToOhtMapper, patientInfo: PatientInfo, documentDate?: Date) => RangeExtractionResponse;
|
|
18
|
+
defaultRangeExtractionFunc?: (labToOhtMapper: LabToOhtMapper, exam: any) => RangeExtractionResponse;
|
|
19
|
+
}
|
|
20
|
+
export interface UnitExtraction {
|
|
21
|
+
predefinedUnit?: string;
|
|
22
|
+
unitPosition?: string;
|
|
23
|
+
extractionRegex?: RegExp;
|
|
24
|
+
extractionFunc?: (examResult: any) => string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface ReferenceAsAnnotation {
|
|
27
|
+
use: boolean;
|
|
28
|
+
position?: string;
|
|
29
|
+
extractionFunc?: (exam: any, labToOhtMapper: LabToOhtMapper, patientInfo: PatientInfo, documentDate?: Date) => string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface UnknownMeasurementExtraction {
|
|
32
|
+
biomarkerName?: string;
|
|
33
|
+
value?: string;
|
|
34
|
+
unit?: string;
|
|
35
|
+
annotation?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface LabToOhtMapper {
|
|
38
|
+
ohtBmId?: number;
|
|
39
|
+
labKey: string;
|
|
40
|
+
rawExam?: string;
|
|
41
|
+
material?: string;
|
|
42
|
+
method?: string;
|
|
43
|
+
valueExtraction?: ValueExtraction;
|
|
44
|
+
unitExtraction?: UnitExtraction;
|
|
45
|
+
rangeExtraction?: RangeExtraction;
|
|
46
|
+
referenceAsAnnotation?: ReferenceAsAnnotation;
|
|
47
|
+
unknownMeasurement?: UnknownMeasurementExtraction;
|
|
48
|
+
}
|
|
49
|
+
export interface LabToOhtContract {
|
|
50
|
+
labToOhtList: LabToOhtMapper[];
|
|
51
|
+
slackMessages: SlackMessage[];
|
|
52
|
+
patientInfo: PatientInfo;
|
|
53
|
+
documentDate?: Date;
|
|
54
|
+
sourceFilename: string;
|
|
55
|
+
externalPatientId: string;
|
|
56
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unitSynonyms = void 0;
|
|
4
|
+
exports.unitSynonyms = {
|
|
5
|
+
'mm³': '/mm³',
|
|
6
|
+
'/mm3': '/mm³',
|
|
7
|
+
'mg/dl': 'mg/dL',
|
|
8
|
+
'milh./mm3': 'milhões/mm³',
|
|
9
|
+
'milh./mm3³': 'milhões/mm³',
|
|
10
|
+
'u3': 'µm³',
|
|
11
|
+
'µm ³': 'µm³',
|
|
12
|
+
'10^6/µ L': '10^6/µL',
|
|
13
|
+
'mUI/ mL': 'mIU/mL',
|
|
14
|
+
'miu/ mL': 'mIU/mL',
|
|
15
|
+
'mui/ml': 'mIU/mL',
|
|
16
|
+
'ml/min/1,73m2': 'mL/min',
|
|
17
|
+
'ml/min': 'mL/min/1,73m2',
|
|
18
|
+
'seg': 's',
|
|
19
|
+
'NA': 'None',
|
|
20
|
+
'na': 'None',
|
|
21
|
+
'': 'None',
|
|
22
|
+
'IU/L': 'U/L',
|
|
23
|
+
'u/l': 'IU/L',
|
|
24
|
+
'mcg/dl': 'µg/dL',
|
|
25
|
+
'µui/ml': 'µIU/mL',
|
|
26
|
+
'tera/L': '10^6/µL',
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=custom-parser.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"custom-parser.types.js","sourceRoot":"","sources":["../../types/custom-parser.types.ts"],"names":[],"mappings":";;;AAIa,QAAA,YAAY,GAA2B;IAClD,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,aAAa;IAC3B,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,KAAK;IACb,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,QAAQ;IACnB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,QAAQ;IAClB,eAAe,EAAE,QAAQ;IACzB,QAAQ,EAAE,eAAe;IACzB,KAAK,EAAE,GAAG;IACV,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,EAAE,EAAE,MAAM;IACV,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,OAAO;IACjB,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,SAAS;CACpB,CAAC"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
export interface OHTPartner {
|
|
2
|
+
id?: string;
|
|
3
|
+
_id: string;
|
|
4
|
+
createdAt: string;
|
|
5
|
+
updatedAt: string;
|
|
6
|
+
name: string;
|
|
7
|
+
countryCode: string;
|
|
8
|
+
pipeline: string;
|
|
9
|
+
language: string;
|
|
10
|
+
labProfileId?: string;
|
|
11
|
+
reportStyle: string;
|
|
12
|
+
apiVersion: string;
|
|
13
|
+
requiredFields: string[];
|
|
14
|
+
outputTypes: string[];
|
|
15
|
+
panelCustomisation?: PartnerCustomPanel;
|
|
16
|
+
reportCustomisation?: ReportCustomisation;
|
|
17
|
+
style: ReportStyleConfig[];
|
|
18
|
+
}
|
|
19
|
+
export type ReportCustomisation = {
|
|
20
|
+
rules: any[];
|
|
21
|
+
displaySettings: ReportDisplaySettings;
|
|
22
|
+
enableHistoricalData: boolean;
|
|
23
|
+
enableHistoricalMode: boolean;
|
|
24
|
+
includeLOINCCodes: boolean;
|
|
25
|
+
};
|
|
26
|
+
export type ReportDisplaySettings = {
|
|
27
|
+
displayExternalCompatibilityDisclaimer: boolean;
|
|
28
|
+
displayInternalCompatibilityDisclaimer: boolean;
|
|
29
|
+
displayBiomarkerSpecificDisclaimer: boolean;
|
|
30
|
+
displayInternalAnnotations: boolean;
|
|
31
|
+
displayCalculations: boolean;
|
|
32
|
+
displayHistoricalGenericDisclaimer: boolean;
|
|
33
|
+
};
|
|
34
|
+
export type PartnerCustomPanel = {
|
|
35
|
+
includedBiomarkerIds: number[];
|
|
36
|
+
biomarkerCustomisations: BiomarkerCustomisation[];
|
|
37
|
+
hubGroupViewEnabled: boolean;
|
|
38
|
+
};
|
|
39
|
+
export type BiomarkerCustomisation = {
|
|
40
|
+
biomarkerId: number;
|
|
41
|
+
key: string;
|
|
42
|
+
targetUnit: string;
|
|
43
|
+
};
|
|
44
|
+
export type LanguageCode = 'en' | 'es' | 'fr' | 'pt';
|
|
45
|
+
export type ReportStyleConfig = {
|
|
46
|
+
name: string;
|
|
47
|
+
logoPath?: string;
|
|
48
|
+
footerLogoPath?: string;
|
|
49
|
+
showSummary: boolean;
|
|
50
|
+
showUserImage: boolean;
|
|
51
|
+
showEvaluation: boolean;
|
|
52
|
+
generateEvaluation: boolean;
|
|
53
|
+
language?: LanguageCode;
|
|
54
|
+
default: boolean;
|
|
55
|
+
keyPath: string;
|
|
56
|
+
keyValue: string;
|
|
57
|
+
originalDownloadEnabled: boolean;
|
|
58
|
+
showOnlyFirstName: boolean;
|
|
59
|
+
headless?: boolean;
|
|
60
|
+
};
|
|
61
|
+
export interface SignedUpload {
|
|
62
|
+
id?: string;
|
|
63
|
+
_id: string;
|
|
64
|
+
contentType: string;
|
|
65
|
+
createdAt: string;
|
|
66
|
+
partnerId: string;
|
|
67
|
+
path: string;
|
|
68
|
+
status: string;
|
|
69
|
+
updatedAt: string;
|
|
70
|
+
userId: string;
|
|
71
|
+
externalId: string;
|
|
72
|
+
}
|
|
73
|
+
export interface MessagePayload {
|
|
74
|
+
contentType: string;
|
|
75
|
+
name: string;
|
|
76
|
+
partnerConfig: OHTPartner;
|
|
77
|
+
signedUpload: SignedUpload;
|
|
78
|
+
}
|
|
79
|
+
export type DataImportFileUpload = {
|
|
80
|
+
id: string;
|
|
81
|
+
description: string;
|
|
82
|
+
signedUploadId: string;
|
|
83
|
+
filename: string;
|
|
84
|
+
mimeType: string;
|
|
85
|
+
fileSizeBytes: number;
|
|
86
|
+
uploadedByUserId: string;
|
|
87
|
+
status: DataImportFileUploadStatus;
|
|
88
|
+
isArchived: boolean;
|
|
89
|
+
isDeleted: boolean;
|
|
90
|
+
lastProcessedByUserId?: string;
|
|
91
|
+
rejectReason?: string;
|
|
92
|
+
patientInfo: PatientInfo;
|
|
93
|
+
documentDate?: Date;
|
|
94
|
+
labProfileId?: string;
|
|
95
|
+
labId?: string;
|
|
96
|
+
partnerId: string;
|
|
97
|
+
externalPatientId: string;
|
|
98
|
+
digitalization: Digitization;
|
|
99
|
+
unknownMeasurements: UnknownMeasurement[];
|
|
100
|
+
measurements: Measurement[];
|
|
101
|
+
notes: string;
|
|
102
|
+
reportStyle: string;
|
|
103
|
+
createdAt: Date;
|
|
104
|
+
updatedAt: Date;
|
|
105
|
+
reportExternalId?: string;
|
|
106
|
+
documentFingerprint?: string;
|
|
107
|
+
};
|
|
108
|
+
export interface Measurement {
|
|
109
|
+
biomarkerId: number;
|
|
110
|
+
valueType: BiomarkerValueType;
|
|
111
|
+
alphanumericValue: string | null;
|
|
112
|
+
alphanumericRiskLevelId?: string;
|
|
113
|
+
value: number | null;
|
|
114
|
+
comparator: MeasurementValueComparator;
|
|
115
|
+
minNormalValue: number | null;
|
|
116
|
+
maxNormalValue: number | null;
|
|
117
|
+
rangeAnnotation?: string;
|
|
118
|
+
unit: string;
|
|
119
|
+
showVisualisationIfAnnotated: boolean;
|
|
120
|
+
score?: number;
|
|
121
|
+
method?: string;
|
|
122
|
+
material?: string;
|
|
123
|
+
collectionDate?: Date;
|
|
124
|
+
isDigitalizationApproved?: boolean;
|
|
125
|
+
isManualChecked?: boolean;
|
|
126
|
+
isAiParsed?: boolean;
|
|
127
|
+
isHumanParsed?: boolean;
|
|
128
|
+
}
|
|
129
|
+
export interface UnknownMeasurement {
|
|
130
|
+
biomarkerName: string;
|
|
131
|
+
value: string;
|
|
132
|
+
unit?: string;
|
|
133
|
+
annotation?: string;
|
|
134
|
+
isAiParsed?: boolean;
|
|
135
|
+
isHumanParsed?: boolean;
|
|
136
|
+
}
|
|
137
|
+
export interface PatientInfo {
|
|
138
|
+
firstName: string;
|
|
139
|
+
sex: Sex;
|
|
140
|
+
birthdate?: Date;
|
|
141
|
+
lastName?: string;
|
|
142
|
+
cpf?: string;
|
|
143
|
+
address?: string;
|
|
144
|
+
height?: number;
|
|
145
|
+
weight?: number;
|
|
146
|
+
isDigitalizationApproved: boolean;
|
|
147
|
+
}
|
|
148
|
+
export type Digitization = {
|
|
149
|
+
status: DigitizationStatus;
|
|
150
|
+
pipelineStep?: string;
|
|
151
|
+
pipelineStepPercentageCompleted?: number;
|
|
152
|
+
pipelineStepData?: Record<string, any>;
|
|
153
|
+
lastUpdated?: string;
|
|
154
|
+
};
|
|
155
|
+
export declare enum Sex {
|
|
156
|
+
MALE = "MALE",
|
|
157
|
+
FEMALE = "FEMALE",
|
|
158
|
+
OTHER = "OTHER"
|
|
159
|
+
}
|
|
160
|
+
export declare enum DataImportFileUploadStatus {
|
|
161
|
+
UPLOADED = "UPLOADED",
|
|
162
|
+
PENDING = "PENDING",
|
|
163
|
+
PROCESSING = "PROCESSING",
|
|
164
|
+
FOR_REVIEW = "FOR_REVIEW",
|
|
165
|
+
IN_REVIEW = "IN_REVIEW",
|
|
166
|
+
PROCESSED = "PROCESSED",
|
|
167
|
+
READY = "READY",
|
|
168
|
+
EDITING = "EDITING",
|
|
169
|
+
APPROVED = "APPROVED",
|
|
170
|
+
REJECTED = "REJECTED",
|
|
171
|
+
MISSING_DATA = "MISSING_DATA"
|
|
172
|
+
}
|
|
173
|
+
export declare enum BiomarkerValueType {
|
|
174
|
+
ALPHANUMERICAL = "ALPHANUMERICAL",
|
|
175
|
+
NUMERICAL = "NUMERICAL"
|
|
176
|
+
}
|
|
177
|
+
export declare enum MeasurementValueComparator {
|
|
178
|
+
EQUAL = "EQUAL",
|
|
179
|
+
GREATER_THAN = "GREATER_THAN",
|
|
180
|
+
LESS_THAN = "LESS_THAN"
|
|
181
|
+
}
|
|
182
|
+
export declare enum DigitizationStatus {
|
|
183
|
+
PENDING = "PENDING",
|
|
184
|
+
WAITING = "WAITING",
|
|
185
|
+
PROCESSING = "PROCESSING",
|
|
186
|
+
DONE = "DONE",
|
|
187
|
+
ERROR = "ERROR",
|
|
188
|
+
DISABLED = "DISABLED"
|
|
189
|
+
}
|
|
190
|
+
export declare enum PipelineStep {
|
|
191
|
+
REPORT_ANALYSIS_STEP = "REPORT_ANALYSIS_STEP",
|
|
192
|
+
EXAMS_LIST_STEP = "EXAMS_LIST_STEP",
|
|
193
|
+
EXAM_DETAIL_EXTRACTION_STEP = "EXAM_DETAIL_EXTRACTION_STEP",
|
|
194
|
+
BIOMARKER_MAPPING_STEP = "BIOMARKER_MAPPING_STEP"
|
|
195
|
+
}
|
|
196
|
+
export type Biomarker = {
|
|
197
|
+
id: number;
|
|
198
|
+
title: string;
|
|
199
|
+
link: string;
|
|
200
|
+
modifiedAt: string;
|
|
201
|
+
acf: BiomarkerAcf;
|
|
202
|
+
createdAt: string;
|
|
203
|
+
updatedAt: string;
|
|
204
|
+
};
|
|
205
|
+
export type BiomarkerAcf = {
|
|
206
|
+
goLiveStatus: GoLiveStatus;
|
|
207
|
+
bm_historical_view_active: boolean;
|
|
208
|
+
fullName: string;
|
|
209
|
+
shortName: string;
|
|
210
|
+
abbreviationName: string;
|
|
211
|
+
key: string;
|
|
212
|
+
aliasNames: NameAlias[];
|
|
213
|
+
standardUnit: string;
|
|
214
|
+
alternativeUnits: AlternativeUnit[];
|
|
215
|
+
longDescription: string;
|
|
216
|
+
shortDescription: string;
|
|
217
|
+
defaultType: string;
|
|
218
|
+
priority: string;
|
|
219
|
+
compatibility: BiomarkerCompatibility;
|
|
220
|
+
manualCheck: ManualCheck;
|
|
221
|
+
genericDisclaimerText: string;
|
|
222
|
+
genericDisclaimerLogic: AcfBiomarkerGenericDisclaimerLogic;
|
|
223
|
+
customCompatibilityDescription: string;
|
|
224
|
+
visualRanges: VisualRange[];
|
|
225
|
+
displayDecimals: number;
|
|
226
|
+
plausibilityRangeCheck: number;
|
|
227
|
+
plausibilityRangeCheckHigh: number;
|
|
228
|
+
referenceRanges: AcfReferenceRange[];
|
|
229
|
+
greatersmallerthanAllowed: boolean;
|
|
230
|
+
rangeAnnotation: string;
|
|
231
|
+
rangeAnnotationCheck: AcfBiomarkerRangeAnnotationCheck;
|
|
232
|
+
reviewStatus: string;
|
|
233
|
+
workPrio: string;
|
|
234
|
+
workingOrder: number;
|
|
235
|
+
};
|
|
236
|
+
export declare enum GoLiveStatus {
|
|
237
|
+
Green = "green",
|
|
238
|
+
Yellow = "yellow",
|
|
239
|
+
Red = "red"
|
|
240
|
+
}
|
|
241
|
+
export type AlternativeUnit = {
|
|
242
|
+
name: string;
|
|
243
|
+
conversionFactor: number;
|
|
244
|
+
displayDecimals: number;
|
|
245
|
+
isVisible: boolean;
|
|
246
|
+
};
|
|
247
|
+
export type NameAlias = {
|
|
248
|
+
name: string;
|
|
249
|
+
};
|
|
250
|
+
export type VisualRange = {
|
|
251
|
+
min: number;
|
|
252
|
+
max: number;
|
|
253
|
+
appliesTo: string;
|
|
254
|
+
};
|
|
255
|
+
export type AcfReferenceRange = {
|
|
256
|
+
from: number;
|
|
257
|
+
to: number;
|
|
258
|
+
greaterThan: number;
|
|
259
|
+
type: ReferenceRangeType;
|
|
260
|
+
alphanumericalMatch: string;
|
|
261
|
+
sex: Sex;
|
|
262
|
+
ageFrom: number;
|
|
263
|
+
ageTo: number;
|
|
264
|
+
riskLevel: string;
|
|
265
|
+
isStandard: boolean;
|
|
266
|
+
isVisible: boolean;
|
|
267
|
+
isCriticial: boolean;
|
|
268
|
+
exceptionCompatibility: string;
|
|
269
|
+
exceptionUnit: string;
|
|
270
|
+
exceptionAlphanumericalMatch: string;
|
|
271
|
+
description: string;
|
|
272
|
+
};
|
|
273
|
+
export declare enum ReferenceRangeType {
|
|
274
|
+
NUMERICAL = "numerical",
|
|
275
|
+
GREATER_THAN = "> XX",
|
|
276
|
+
ALPHANUMERICAL = "alphanumerical"
|
|
277
|
+
}
|
|
278
|
+
export declare enum BiomarkerCompatibility {
|
|
279
|
+
Internal = "internal",
|
|
280
|
+
External = "external",
|
|
281
|
+
ExternalAlphanumerical = "external_alphanumerical",
|
|
282
|
+
ExternalNoVisualRange = "external_no_visual_range",
|
|
283
|
+
ExternalStrict = "external_strict",
|
|
284
|
+
Custom = "custom"
|
|
285
|
+
}
|
|
286
|
+
export declare enum ManualCheck {
|
|
287
|
+
NO = "No",
|
|
288
|
+
MANDATORY = "Mandatory"
|
|
289
|
+
}
|
|
290
|
+
export declare enum AcfBiomarkerGenericDisclaimerLogic {
|
|
291
|
+
DONT_SHOW = "DONT_SHOW",
|
|
292
|
+
SHOW_ALWAYS = "SHOW_ALWAYS"
|
|
293
|
+
}
|
|
294
|
+
export declare enum AcfBiomarkerRangeAnnotationCheck {
|
|
295
|
+
DONT_SHOW = "DONT_SHOW",
|
|
296
|
+
SHOW_WITH_EXTERNAL = "SHOW_WITH_EXTERNAL",
|
|
297
|
+
SHOW_IF_NO_EXTERNAL = "SHOW_IF_NO_EXTERNAL",
|
|
298
|
+
SHOW_WOMEN_IF_NO_EXTERNAL = "SHOW_WOMEN_IF_NO_EXTERNAL",
|
|
299
|
+
SHOW_MEN_IF_NO_EXTERNAL = "SHOW_MEN_IF_NO_EXTERNAL"
|
|
300
|
+
}
|