@openhealth/oht-custom-parser-lib 0.4.3 → 0.5.2
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 +3 -1
- package/dist/index.js +20 -2
- package/dist/index.js.map +1 -1
- package/dist/service/auxiliaryFunctions.service.d.ts +2 -0
- package/dist/service/auxiliaryFunctions.service.js +4 -3
- package/dist/service/auxiliaryFunctions.service.js.map +1 -1
- package/dist/service/fileUploadErrorHandler.service.d.ts +26 -0
- package/dist/service/fileUploadErrorHandler.service.js +257 -0
- package/dist/service/fileUploadErrorHandler.service.js.map +1 -0
- package/dist/service/ohtMeasurementsExtractor.service.js +22 -23
- package/dist/service/ohtMeasurementsExtractor.service.js.map +1 -1
- package/dist/service/ohtReportMeasurementsExtractor.service.d.ts +1 -0
- package/dist/service/ohtReportMeasurementsExtractor.service.js +33 -37
- package/dist/service/ohtReportMeasurementsExtractor.service.js.map +1 -1
- package/dist/service/processingLogger.service.d.ts +140 -0
- package/dist/service/processingLogger.service.js +515 -0
- package/dist/service/processingLogger.service.js.map +1 -0
- package/dist/service/reportCreator.service.d.ts +1 -1
- package/dist/service/reportCreator.service.js +53 -65
- package/dist/service/reportCreator.service.js.map +1 -1
- package/dist/service/slackMessages.service.js +4 -5
- package/dist/service/slackMessages.service.js.map +1 -1
- package/dist/service/transformationRules.service.js +3 -10
- package/dist/service/transformationRules.service.js.map +1 -1
- package/dist/types/error.types.d.ts +82 -0
- package/dist/types/error.types.js +195 -0
- package/dist/types/error.types.js.map +1 -1
- package/dist/types/oht.types.d.ts +5 -1
- package/dist/types/oht.types.js +4 -0
- package/dist/types/oht.types.js.map +1 -1
- package/dist/util-ts/apiUtils.js +2 -3
- package/dist/util-ts/apiUtils.js.map +1 -1
- package/dist/util-ts/dataUtils.js +24 -16
- package/dist/util-ts/dataUtils.js.map +1 -1
- package/dist/util-ts/extractionUtils.js +4 -8
- package/dist/util-ts/extractionUtils.js.map +1 -1
- package/dist/util-ts/pinoLogger.js +28 -1
- package/dist/util-ts/pinoLogger.js.map +1 -1
- package/package.json +36 -34
- package/readme.md +115 -99
- package/dist/service/ohtAgnosticMeasurementsExtractor.service.d.ts +0 -59
- package/dist/service/ohtAgnosticMeasurementsExtractor.service.js +0 -603
- package/dist/service/ohtAgnosticMeasurementsExtractor.service.js.map +0 -1
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.postDataImportFileUploadToCore = postDataImportFileUploadToCore;
|
|
7
7
|
exports.postReportPreviewToCore = postReportPreviewToCore;
|
|
8
8
|
const oht_types_1 = require("../types/oht.types");
|
|
9
|
-
const
|
|
10
|
-
const logger = (0, pinoLogger_1.default)();
|
|
9
|
+
const processingLogger_service_1 = require("./processingLogger.service");
|
|
11
10
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
12
11
|
const dataUtils_1 = require("../util-ts/dataUtils");
|
|
13
12
|
const apiUtils_1 = require("../util-ts/apiUtils");
|
|
@@ -17,13 +16,10 @@ const OHT_CORE_URL = process.env.OHT_CORE_URL;
|
|
|
17
16
|
* Posts report preview data (measurements and unknownMeasurements) to OHT Core API.
|
|
18
17
|
* Uses the shared makeApiCallWithRetry helper (Basic auth) from oht-custom-parser-lib.
|
|
19
18
|
*/
|
|
20
|
-
async function postReportPreviewToCore(reportPreviewId, measurements, unknownMeasurements, filename, unknownUnits, partnerId,
|
|
19
|
+
async function postReportPreviewToCore(reportPreviewId, measurements, unknownMeasurements, filename, unknownUnits, partnerId, ohtCoreApiKey) {
|
|
21
20
|
if (!OHT_CORE_URL) {
|
|
22
21
|
throw new Error(`ERROR: OHT_CORE_URL is required for report preview, filename: ${filename}`);
|
|
23
22
|
}
|
|
24
|
-
let status = isReportParsedCorrectly
|
|
25
|
-
? oht_types_1.DataImportFileUploadStatus.READY
|
|
26
|
-
: oht_types_1.DataImportFileUploadStatus.FOR_REVIEW;
|
|
27
23
|
const apiUrl = `${OHT_CORE_URL}/v1/report-preview/${reportPreviewId}`;
|
|
28
24
|
// send unknown units to the server
|
|
29
25
|
if (unknownUnits.length > 0) {
|
|
@@ -31,55 +27,48 @@ async function postReportPreviewToCore(reportPreviewId, measurements, unknownMea
|
|
|
31
27
|
await (0, dataUtils_1.bulkCreateCustomParserUnknownUnits)(partnerId, unknownUnits, ohtCoreApiKey);
|
|
32
28
|
}
|
|
33
29
|
catch (error) {
|
|
34
|
-
|
|
30
|
+
processingLogger_service_1.processingLogger.logError(`Failed to send unknown units to server, filename: ${filename}`, error instanceof Error ? error : new Error(String(error)), {
|
|
35
31
|
error: (0, apiUtils_1.parseErrorObj)(error),
|
|
36
32
|
partnerId: partnerId,
|
|
37
|
-
unknownUnitsCount: unknownUnits.length
|
|
38
|
-
}
|
|
33
|
+
unknownUnitsCount: unknownUnits.length,
|
|
34
|
+
});
|
|
39
35
|
}
|
|
40
36
|
}
|
|
41
37
|
// Always send both arrays, with empty arrays if no data
|
|
42
38
|
const requestBody = {
|
|
43
|
-
status:
|
|
39
|
+
status: 'READY',
|
|
44
40
|
measurements: measurements || [],
|
|
45
41
|
unknownMeasurements: unknownMeasurements || [],
|
|
46
|
-
notes: notes,
|
|
47
42
|
};
|
|
48
|
-
|
|
43
|
+
processingLogger_service_1.processingLogger.logInfo(`postReportPreviewToCore: Sending report preview to OHT Core API (${(measurements || []).length} measurements, ${(unknownMeasurements || []).length} unknownMeasurements), filename: ${filename}`, {
|
|
49
44
|
filename,
|
|
50
|
-
reportPreviewId,
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
request: {
|
|
54
|
-
|
|
55
|
-
url: apiUrl,
|
|
56
|
-
},
|
|
57
|
-
}, `postReportPreviewToCore: Sending report preview to OHT Core API (${(measurements || []).length} measurements, ${(unknownMeasurements || []).length} unknownMeasurements), filename: ${filename}`);
|
|
45
|
+
report_preview_id: reportPreviewId,
|
|
46
|
+
measurements_count: (measurements || []).length,
|
|
47
|
+
unknown_measurements_count: (unknownMeasurements || []).length,
|
|
48
|
+
request: { method: 'POST', url: apiUrl },
|
|
49
|
+
});
|
|
58
50
|
try {
|
|
59
51
|
const response = await (0, apiUtils_1.makeApiCallWithRetry)('post', apiUrl, requestBody, ohtCoreApiKey);
|
|
60
|
-
|
|
52
|
+
const responseData = response?.data;
|
|
53
|
+
processingLogger_service_1.processingLogger.logInfo(`postReportPreviewToCore: Successfully sent report preview to OHT Core API (${(measurements || []).length} measurements, ${(unknownMeasurements || []).length} unknownMeasurements), filename: ${filename}`, {
|
|
61
54
|
filename,
|
|
62
|
-
reportPreviewId,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
55
|
+
report_preview_id: reportPreviewId,
|
|
56
|
+
measurements_count: (measurements || []).length,
|
|
57
|
+
unknown_measurements_count: (unknownMeasurements || []).length,
|
|
58
|
+
http_status: response?.status,
|
|
59
|
+
response_message: typeof responseData?.message === 'string' ? responseData.message : undefined,
|
|
60
|
+
response_status: responseData?.status,
|
|
61
|
+
});
|
|
68
62
|
}
|
|
69
63
|
catch (apiError) {
|
|
70
|
-
|
|
71
|
-
const httpResponse = errorDetails.responseData;
|
|
72
|
-
logger.error({
|
|
64
|
+
processingLogger_service_1.processingLogger.logError(`postReportPreviewToCore: Failed to send report preview to OHT Core API, filename: ${filename}`, apiError instanceof Error ? apiError : undefined, {
|
|
73
65
|
filename,
|
|
74
|
-
reportPreviewId,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
httpResponse,
|
|
81
|
-
errorStack: apiError instanceof Error ? apiError.stack : undefined,
|
|
82
|
-
}, `postReportPreviewToCore: Failed to send report preview to OHT Core API, filename: ${filename}`);
|
|
66
|
+
report_preview_id: reportPreviewId,
|
|
67
|
+
measurements_count: (measurements || []).length,
|
|
68
|
+
unknown_measurements_count: (unknownMeasurements || []).length,
|
|
69
|
+
error_details: (0, apiUtils_1.parseErrorObj)(apiError),
|
|
70
|
+
http_response: (0, apiUtils_1.parseErrorObj)(apiError).responseData,
|
|
71
|
+
});
|
|
83
72
|
// Re-throw so the caller can handle it
|
|
84
73
|
throw apiError;
|
|
85
74
|
}
|
|
@@ -94,9 +83,9 @@ async function postDataImportFileUploadToCore(dataImportFileUpload, unknownMeasu
|
|
|
94
83
|
// Get the owner user binding to update the user with patient information
|
|
95
84
|
const userBindingUrl = `${OHT_CORE_URL}/v1/useruploadbinding/useruploadbindings/${dataImportFileUpload.id}`;
|
|
96
85
|
const userBindingResponse = await (0, apiUtils_1.makeApiCallWithRetry)('get', userBindingUrl, null, ohtCoreApiKey);
|
|
97
|
-
|
|
86
|
+
processingLogger_service_1.processingLogger.logInfo(`Resp: GET BINDING /v1/useruploadbinding/useruploadbindings/${dataImportFileUpload.id}, filename: ${filename}`, { response: userBindingResponse.data });
|
|
98
87
|
if (!userBindingResponse?.data?.ownerUserId) {
|
|
99
|
-
|
|
88
|
+
processingLogger_service_1.processingLogger.logError(`ERROR: No ownerUserId found in binding response for fileUploadId: ${dataImportFileUpload.id}, filename: ${filename}`, undefined, { response: userBindingResponse?.data });
|
|
100
89
|
throw new Error(`No ownerUserId found for fileUploadId: ${dataImportFileUpload.id}`);
|
|
101
90
|
}
|
|
102
91
|
const ownerUserId = userBindingResponse.data.ownerUserId;
|
|
@@ -114,23 +103,23 @@ async function postDataImportFileUploadToCore(dataImportFileUpload, unknownMeasu
|
|
|
114
103
|
};
|
|
115
104
|
const userUrl = `${OHT_CORE_URL}/v1/user/users/${ownerUserId}`;
|
|
116
105
|
const userResponse = await (0, apiUtils_1.makeApiCallWithRetry)('patch', userUrl, userPayload, ohtCoreApiKey);
|
|
117
|
-
|
|
106
|
+
processingLogger_service_1.processingLogger.logInfo(`Resp: PATCH USER /v1/users/${ownerUserId}, filename: ${filename}`, { response: userResponse.data });
|
|
118
107
|
try {
|
|
119
108
|
// Send unknown measurements if they exist (before ingestion)
|
|
120
109
|
if (unknownMeasurements.unmappedlabkeys.length > 0) {
|
|
121
110
|
try {
|
|
122
111
|
await (0, dataUtils_1.updatePartnerCustomParserUnmappedLabKeys)(dataImportFileUpload.partnerId, unknownMeasurements, ohtCoreApiKey);
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
112
|
+
processingLogger_service_1.processingLogger.logInfo(`Successfully sent unknown measurements to server, filename: ${filename}`, {
|
|
113
|
+
partner_id: dataImportFileUpload.partnerId,
|
|
114
|
+
unknown_measurements_count: unknownMeasurements.unmappedlabkeys.length,
|
|
115
|
+
});
|
|
127
116
|
}
|
|
128
117
|
catch (error) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
118
|
+
processingLogger_service_1.processingLogger.logError(`Failed to send unknown measurements to server, filename: ${filename}`, error instanceof Error ? error : undefined, {
|
|
119
|
+
partner_id: dataImportFileUpload.partnerId,
|
|
120
|
+
unknown_measurements_count: unknownMeasurements.unmappedlabkeys.length,
|
|
121
|
+
error_details: (0, apiUtils_1.parseErrorObj)(error),
|
|
122
|
+
});
|
|
134
123
|
}
|
|
135
124
|
}
|
|
136
125
|
if (unknownUnits.length > 0) {
|
|
@@ -138,11 +127,11 @@ async function postDataImportFileUploadToCore(dataImportFileUpload, unknownMeasu
|
|
|
138
127
|
await (0, dataUtils_1.bulkCreateCustomParserUnknownUnits)(dataImportFileUpload.partnerId, unknownUnits, ohtCoreApiKey);
|
|
139
128
|
}
|
|
140
129
|
catch (error) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
}
|
|
130
|
+
processingLogger_service_1.processingLogger.logError(`Failed to send unknown units to server, filename: ${filename}`, error instanceof Error ? error : undefined, {
|
|
131
|
+
partner_id: dataImportFileUpload.partnerId,
|
|
132
|
+
unknown_units_count: unknownUnits.length,
|
|
133
|
+
error_details: (0, apiUtils_1.parseErrorObj)(error),
|
|
134
|
+
});
|
|
146
135
|
}
|
|
147
136
|
}
|
|
148
137
|
// Use ingestion endpoint - handles report creation and READY status automatically
|
|
@@ -155,7 +144,7 @@ async function postDataImportFileUploadToCore(dataImportFileUpload, unknownMeasu
|
|
|
155
144
|
pipelineStep: oht_types_1.PipelineStep.SENDING_RESULTS,
|
|
156
145
|
},
|
|
157
146
|
}, ohtCoreApiKey);
|
|
158
|
-
|
|
147
|
+
processingLogger_service_1.processingLogger.logInfo(`Resp: PATCH ingestion status: ${patchStatus} ${ohtCoreIngestionUrl}, filename: ${filename}`, { response: ingestionResponse.data });
|
|
159
148
|
// Ingestion endpoint returns acknowledgment: { message: "Ingestion started", fileUploadId: "..." }
|
|
160
149
|
// Processing (user updates, report creation, READY status) happens asynchronously in background
|
|
161
150
|
// For PROCESSED status, it will automatically:
|
|
@@ -164,19 +153,18 @@ async function postDataImportFileUploadToCore(dataImportFileUpload, unknownMeasu
|
|
|
164
153
|
// - Set status to READY
|
|
165
154
|
// - Trigger all notifications and webhooks
|
|
166
155
|
if (!isReportParsedCorrectly || rejectedStatus !== undefined) {
|
|
167
|
-
|
|
168
|
-
isReportParsedCorrectly,
|
|
169
|
-
rejectedStatus,
|
|
170
|
-
|
|
171
|
-
}
|
|
156
|
+
processingLogger_service_1.processingLogger.logWarn(`Report not parsed correctly fileUploadID ${dataImportFileUpload.id}, filename: ${filename}`, {
|
|
157
|
+
is_report_parsed_correctly: isReportParsedCorrectly,
|
|
158
|
+
rejected_status: rejectedStatus,
|
|
159
|
+
ingestion_response: ingestionResponse.data,
|
|
160
|
+
});
|
|
172
161
|
}
|
|
173
162
|
// Return null since ingestion is asynchronous and we don't have the updated file upload object
|
|
174
163
|
// The caller should not rely on the returned value for status checking
|
|
175
164
|
return null;
|
|
176
165
|
}
|
|
177
166
|
catch (error) {
|
|
178
|
-
|
|
179
|
-
logger.error({ patchStatus, resp: errorDetail }, `ERROR: on report generation url:${ohtCoreIngestionUrl} filename: ${filename}`);
|
|
167
|
+
processingLogger_service_1.processingLogger.logError(`ERROR: on report generation url:${ohtCoreIngestionUrl} filename: ${filename}`, error instanceof Error ? error : undefined, { patch_status: patchStatus, resp: (0, apiUtils_1.parseErrorObj)(error) });
|
|
180
168
|
// Set digitalization error for tracking
|
|
181
169
|
try {
|
|
182
170
|
await (0, apiUtils_1.makeApiCallWithRetry)('patch', ohtCoreDigitalizationUrl, {
|
|
@@ -186,7 +174,7 @@ async function postDataImportFileUploadToCore(dataImportFileUpload, unknownMeasu
|
|
|
186
174
|
}, ohtCoreApiKey);
|
|
187
175
|
}
|
|
188
176
|
catch (digitalizationError) {
|
|
189
|
-
|
|
177
|
+
processingLogger_service_1.processingLogger.logError(`Failed to update digitalization status, filename: ${filename}`, digitalizationError instanceof Error ? digitalizationError : undefined, { digitalization_error: (0, apiUtils_1.parseErrorObj)(digitalizationError) });
|
|
190
178
|
}
|
|
191
179
|
// Re-throw error so it can be handled by the error handler in agnostic-parser
|
|
192
180
|
// The error handler will detect 409 conflicts and update file upload status appropriately
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportCreator.service.js","sourceRoot":"","sources":["../../service/reportCreator.service.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"reportCreator.service.js","sourceRoot":"","sources":["../../service/reportCreator.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,8 +8,7 @@ exports.sendMessageToSlack = sendMessageToSlack;
|
|
|
8
8
|
exports.aggregateMessages = aggregateMessages;
|
|
9
9
|
const axios_1 = __importDefault(require("axios"));
|
|
10
10
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
11
|
-
const
|
|
12
|
-
const logger = (0, pinoLogger_1.default)();
|
|
11
|
+
const processingLogger_service_1 = require("./processingLogger.service");
|
|
13
12
|
dotenv_1.default.config({ path: `.env.local` });
|
|
14
13
|
// Get the Slack webhook URL from the environment variable
|
|
15
14
|
const slackWebhookUrl = process.env.SLACK_WEBHOOK_URL;
|
|
@@ -79,14 +78,14 @@ async function sendMessageToSlack(payload) {
|
|
|
79
78
|
try {
|
|
80
79
|
const response = await axios_1.default.post(slackWebhookUrl, payload);
|
|
81
80
|
if (response.status === 200) {
|
|
82
|
-
|
|
81
|
+
processingLogger_service_1.processingLogger.logInfo('Message successfully sent to Slack.');
|
|
83
82
|
}
|
|
84
83
|
else {
|
|
85
|
-
|
|
84
|
+
processingLogger_service_1.processingLogger.logInfo('Error sending message to Slack:', { status: response.status, statusText: response.statusText });
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
catch (error) {
|
|
89
|
-
|
|
88
|
+
processingLogger_service_1.processingLogger.logWarn('Error sending message to Slack:', { error: error instanceof Error ? error.message : String(error) });
|
|
90
89
|
}
|
|
91
90
|
}
|
|
92
91
|
//# sourceMappingURL=slackMessages.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slackMessages.service.js","sourceRoot":"","sources":["../../service/slackMessages.service.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"slackMessages.service.js","sourceRoot":"","sources":["../../service/slackMessages.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.validateJsonataExpression = exports.applyRules = void 0;
|
|
7
7
|
const jsonata_1 = __importDefault(require("jsonata"));
|
|
8
8
|
const transformationRules_1 = require("../util-ts/transformationRules");
|
|
9
|
-
const
|
|
10
|
-
const logger = (0, pinoLogger_1.default)();
|
|
9
|
+
const processingLogger_service_1 = require("./processingLogger.service");
|
|
11
10
|
/**
|
|
12
11
|
* JSON Transformation Rules Engine
|
|
13
12
|
*
|
|
@@ -40,10 +39,7 @@ const evaluateCondition = async (condition, context) => {
|
|
|
40
39
|
return Boolean(result);
|
|
41
40
|
}
|
|
42
41
|
catch (error) {
|
|
43
|
-
|
|
44
|
-
error: error instanceof Error ? error.message : String(error),
|
|
45
|
-
condition,
|
|
46
|
-
}, 'Error evaluating condition.');
|
|
42
|
+
processingLogger_service_1.processingLogger.logError('Error evaluating condition.', error instanceof Error ? error : undefined, { condition });
|
|
47
43
|
return false;
|
|
48
44
|
}
|
|
49
45
|
};
|
|
@@ -62,10 +58,7 @@ const evaluateValueExpression = async (valueExpression, context) => {
|
|
|
62
58
|
return result;
|
|
63
59
|
}
|
|
64
60
|
catch (error) {
|
|
65
|
-
|
|
66
|
-
error: error instanceof Error ? error.message : String(error),
|
|
67
|
-
valueExpression,
|
|
68
|
-
}, 'Error evaluating value expression.');
|
|
61
|
+
processingLogger_service_1.processingLogger.logError('Error evaluating value expression.', error instanceof Error ? error : undefined, { valueExpression });
|
|
69
62
|
throw error;
|
|
70
63
|
}
|
|
71
64
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformationRules.service.js","sourceRoot":"","sources":["../../service/transformationRules.service.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAI9B,wEAEwC;AACxC,
|
|
1
|
+
{"version":3,"file":"transformationRules.service.js","sourceRoot":"","sources":["../../service/transformationRules.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RejectReason } from './oht.types';
|
|
1
2
|
export interface Destination {
|
|
2
3
|
slack: boolean;
|
|
3
4
|
notes: boolean;
|
|
@@ -8,3 +9,84 @@ export interface ErrorMessage {
|
|
|
8
9
|
message: string;
|
|
9
10
|
item?: string;
|
|
10
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Unified error codes for file-upload / parser / normalizer error handling.
|
|
14
|
+
* Coding: ERR_{DOMAIN}_{DESCRIPTION}
|
|
15
|
+
* - VAL = validation (context, payload, config, normalized data)
|
|
16
|
+
* - IO = file I/O, bucket
|
|
17
|
+
* - NORM = normalizer (fetch, execution, compile, selection)
|
|
18
|
+
* - UPLOAD = file upload handler (status, Slack, processing)
|
|
19
|
+
* - PARSE = parsing
|
|
20
|
+
*/
|
|
21
|
+
export declare enum ErrorCode {
|
|
22
|
+
VAL_MISSING_PAYLOAD = "ERR_VAL_MISSING_PAYLOAD",
|
|
23
|
+
VAL_MISSING_API_CONFIG = "ERR_VAL_MISSING_API_CONFIG",
|
|
24
|
+
VAL_MISSING_FILE_OR_BUCKET = "ERR_VAL_MISSING_FILE_OR_BUCKET",
|
|
25
|
+
VAL_INVALID_FILE_TYPE = "ERR_VAL_INVALID_FILE_TYPE",
|
|
26
|
+
VAL_NO_REPORTS_FOUND = "ERR_VAL_NO_REPORTS_FOUND",
|
|
27
|
+
VAL_MISSING_PARTNER_ID = "ERR_VAL_MISSING_PARTNER_ID",
|
|
28
|
+
VAL_INVALID_NORMALIZED_DATA = "ERR_VAL_INVALID_NORMALIZED_DATA",
|
|
29
|
+
VAL_INVALID_NORMALIZED_OBJECT = "ERR_VAL_INVALID_NORMALIZED_OBJECT",
|
|
30
|
+
VAL_INVALID_NORMALIZED_EXAMS = "ERR_VAL_INVALID_NORMALIZED_EXAMS",
|
|
31
|
+
IO_FILE_FETCH = "ERR_IO_FILE_FETCH",
|
|
32
|
+
NORM_FETCH = "ERR_NORM_FETCH",
|
|
33
|
+
NORM_EXECUTION = "ERR_NORM_EXECUTION",
|
|
34
|
+
NORM_FILE_NOT_FOUND = "ERR_NORM_FILE_NOT_FOUND",
|
|
35
|
+
NORM_NOT_COMPILED = "ERR_NORM_NOT_COMPILED",
|
|
36
|
+
NORM_UNSUPPORTED_FORCED = "ERR_NORM_UNSUPPORTED_FORCED",
|
|
37
|
+
NORM_UNSUPPORTED_DEFAULT = "ERR_NORM_UNSUPPORTED_DEFAULT",
|
|
38
|
+
NORM_RETURNED_NULL = "ERR_NORM_RETURNED_NULL",
|
|
39
|
+
UPLOAD_MISSING_SIGNED_UPLOAD_ID = "ERR_UPLOAD_MISSING_SIGNED_UPLOAD_ID",
|
|
40
|
+
UPLOAD_FILE_NOT_FOUND = "ERR_UPLOAD_FILE_NOT_FOUND",
|
|
41
|
+
UPLOAD_SLACK_FAILED = "ERR_UPLOAD_SLACK_FAILED",
|
|
42
|
+
UPLOAD_STATUS_UPDATE_FAILED = "ERR_UPLOAD_STATUS_UPDATE_FAILED",
|
|
43
|
+
UPLOAD_PROCESSING_FAILED = "ERR_UPLOAD_PROCESSING_FAILED",
|
|
44
|
+
UPLOAD_HANDLING_FAILED = "ERR_UPLOAD_HANDLING_FAILED",
|
|
45
|
+
UPLOAD_FILE_UPLOAD_ID_NOT_FOUND = "ERR_UPLOAD_FILE_UPLOAD_ID_NOT_FOUND",
|
|
46
|
+
PARSE_ERROR = "ERR_PARSE_ERROR",
|
|
47
|
+
UNHANDLED = "ERR_UNHANDLED"
|
|
48
|
+
}
|
|
49
|
+
export type ErrorCatalogEntry = {
|
|
50
|
+
/** Internal/log message. For client-facing explanation use rejectReason. */
|
|
51
|
+
message: string;
|
|
52
|
+
/**
|
|
53
|
+
* Client-facing explanation shown to the client (e.g. in file upload status).
|
|
54
|
+
* - Client/file problem: use a descriptive RejectReason (e.g. INVALID_DATA_NO_BIOMARKER_DATA).
|
|
55
|
+
* - Internal/system problem: use PROCESSING_COULD_NOT_BE_COMPLETED so we do not expose or blame our system.
|
|
56
|
+
*/
|
|
57
|
+
rejectReason?: RejectReason;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Single source of truth: error code, message (internal), and rejectReason (client-facing).
|
|
61
|
+
* Use getErrorMessage() / getRejectReason() or ERROR_MESSAGES for backward compatibility.
|
|
62
|
+
*/
|
|
63
|
+
export declare const ERROR_CATALOG: Record<ErrorCode, ErrorCatalogEntry>;
|
|
64
|
+
export declare function getErrorMessage(code: ErrorCode): string;
|
|
65
|
+
export declare function getRejectReason(code: ErrorCode): RejectReason | undefined;
|
|
66
|
+
/**
|
|
67
|
+
* Backward-compatible flat map: logical key -> message.
|
|
68
|
+
* Prefer getErrorMessage(ErrorCode.XXX) for new code.
|
|
69
|
+
*/
|
|
70
|
+
export declare const ERROR_MESSAGES: {
|
|
71
|
+
readonly MISSING_PAYLOAD: string;
|
|
72
|
+
readonly MISSING_API_CONFIG: string;
|
|
73
|
+
readonly MISSING_FILE_OR_BUCKET: string;
|
|
74
|
+
readonly INVALID_FILE_TYPE: string;
|
|
75
|
+
readonly FILE_FETCH_ERROR: string;
|
|
76
|
+
readonly NO_REPORTS_FOUND: string;
|
|
77
|
+
readonly NO_SIGNED_UPLOAD_ID: string;
|
|
78
|
+
readonly FILE_UPLOAD_ID_NOT_FOUND: string;
|
|
79
|
+
readonly NORMALIZER_FETCH_ERROR: string;
|
|
80
|
+
readonly NORMALIZER_EXECUTION_ERROR: string;
|
|
81
|
+
readonly MISSING_PARTNER_ID: string;
|
|
82
|
+
readonly INVALID_NORMALIZED_DATA: string;
|
|
83
|
+
readonly INVALID_NORMALIZED_DATA_OBJECT: string;
|
|
84
|
+
readonly INVALID_NORMALIZED_DATA_EXAMS: string;
|
|
85
|
+
readonly NORMALIZER_FILE_NOT_FOUND: string;
|
|
86
|
+
readonly NORMALIZER_NOT_COMPILED: string;
|
|
87
|
+
readonly UNSUPPORTED_FORCED_NORMALIZER: string;
|
|
88
|
+
readonly UNSUPPORTED_DEFAULT_NORMALIZER: string;
|
|
89
|
+
readonly NORMALIZER_RETURNED_NULL: string;
|
|
90
|
+
readonly PARSING_ERROR: string;
|
|
91
|
+
readonly UNHANDLED_ERROR: string;
|
|
92
|
+
};
|