@openhealth/oht-custom-parser-lib 0.5.55 → 0.5.57
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 -2
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/service/auxiliaryFunctions.service.d.ts +1 -8
- package/dist/service/auxiliaryFunctions.service.js +40 -11
- package/dist/service/auxiliaryFunctions.service.js.map +1 -1
- package/dist/service/ohtAgnosticMeasurementsExtractor.service.d.ts +59 -0
- package/dist/service/ohtAgnosticMeasurementsExtractor.service.js +603 -0
- package/dist/service/ohtAgnosticMeasurementsExtractor.service.js.map +1 -0
- package/dist/service/ohtReportMeasurementsExtractor.service.d.ts +2 -4
- package/dist/service/ohtReportMeasurementsExtractor.service.js +52 -64
- package/dist/service/ohtReportMeasurementsExtractor.service.js.map +1 -1
- package/dist/service/parsingErrorService.service.d.ts +40 -0
- package/dist/service/parsingErrorService.service.js +251 -0
- package/dist/service/parsingErrorService.service.js.map +1 -0
- package/dist/service/processingLogger.service.d.ts +5 -0
- package/dist/service/processingLogger.service.js +52 -1
- package/dist/service/processingLogger.service.js.map +1 -1
- package/dist/types/error.types.d.ts +104 -0
- package/dist/types/error.types.js +240 -1
- package/dist/types/error.types.js.map +1 -1
- package/dist/util-ts/dataUtils.d.ts +1 -0
- package/dist/util-ts/dataUtils.js +15 -1
- package/dist/util-ts/dataUtils.js.map +1 -1
- package/dist/util-ts/mapperUtils.d.ts +2 -1
- package/dist/util-ts/mapperUtils.js +12 -3
- package/dist/util-ts/mapperUtils.js.map +1 -1
- package/package.json +1 -1
- package/dist/util-ts/loincMapping.d.ts +0 -5
- package/dist/util-ts/loincMapping.js +0 -81
- package/dist/util-ts/loincMapping.js.map +0 -1
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { UnknownUnits } from "../types/custom-parser.types";
|
|
2
2
|
import { Measurement, PatientInfo, UnknownMeasurement, Exam, UnmappedLabKey, PartnerCustomization } from "../types/oht.types";
|
|
3
|
-
import { ErrorMessage } from "../types/error.types";
|
|
4
3
|
/**
|
|
5
4
|
* Extracts measurements from OHT report exams by processing each exam through biomarker mapping,
|
|
6
5
|
* transformation rules, and value extraction.
|
|
@@ -121,7 +120,7 @@ import { ErrorMessage } from "../types/error.types";
|
|
|
121
120
|
* - `isReportCorrectlyParsed`: Boolean indicating if all measurements were parsed correctly
|
|
122
121
|
*
|
|
123
122
|
* ## Error Handling:
|
|
124
|
-
* - All errors are
|
|
123
|
+
* - All errors are recorded via `parsingErrorService.record()`
|
|
125
124
|
* - Errors are categorized by destination (slack, notes, bi)
|
|
126
125
|
* - Processing continues even if individual exams fail
|
|
127
126
|
* - Errors are logged with context (filename, labKey, ohtBmId, etc.)
|
|
@@ -141,12 +140,11 @@ import { ErrorMessage } from "../types/error.types";
|
|
|
141
140
|
* @param allowMultiMeasurementsPerBiomarker - Whether to allow multiple measurements per biomarker ID
|
|
142
141
|
* @param ohtCoreApiKey - API key for OHT Core API calls
|
|
143
142
|
* @param partnerId - Partner ID for fetching biomarker mappings and synonym units
|
|
144
|
-
* @param errorMessages - Array to accumulate error messages (modified in-place)
|
|
145
143
|
* @param isReportPreview - isReportPreview Report Simulator
|
|
146
144
|
* @param partnerCustomization - `panelCustomisation` and `reportCustomisation` coming from `partnerConfig`.
|
|
147
145
|
* @returns Promise resolving to extraction result with measurements, unknownMeasurements, unknownUnits, unmappedLabKeys, and parsing status
|
|
148
146
|
*/
|
|
149
|
-
declare function ohtReportMeasurementsExtractor(isReportPreview: boolean, exams: Exam[], sourceFilename: string, patientInfo: PatientInfo, documentDate: Date | undefined, allowMultiMeasurementsPerBiomarker: boolean, ohtCoreApiKey: string, partnerId: string,
|
|
147
|
+
declare function ohtReportMeasurementsExtractor(isReportPreview: boolean, exams: Exam[], sourceFilename: string, patientInfo: PatientInfo, documentDate: Date | undefined, allowMultiMeasurementsPerBiomarker: boolean, ohtCoreApiKey: string, partnerId: string, partnerCustomization?: PartnerCustomization): Promise<{
|
|
150
148
|
measurements: Measurement[];
|
|
151
149
|
unknownMeasurements: UnknownMeasurement[];
|
|
152
150
|
unknownUnits: UnknownUnits[];
|
|
@@ -43,6 +43,8 @@ const extractionUtils_1 = require("../util-ts/extractionUtils");
|
|
|
43
43
|
const processingLogger_service_1 = require("./processingLogger.service");
|
|
44
44
|
const apiUtils_1 = require("../util-ts/apiUtils");
|
|
45
45
|
const oht_types_1 = require("../types/oht.types");
|
|
46
|
+
const error_types_1 = require("../types/error.types");
|
|
47
|
+
const parsingErrorService_service_1 = require("./parsingErrorService.service");
|
|
46
48
|
const path = __importStar(require("path"));
|
|
47
49
|
const fs = __importStar(require("fs"));
|
|
48
50
|
// Import version from package.json file
|
|
@@ -84,6 +86,10 @@ const OHT_CORE_URL = process.env.OHT_CORE_URL;
|
|
|
84
86
|
* Current filename being processed (global state for error reporting)
|
|
85
87
|
*/
|
|
86
88
|
let filename = '';
|
|
89
|
+
function resolveUnknownMeasurementName(parts, fallback) {
|
|
90
|
+
const name = parts.filter((part) => part?.trim()).join(':');
|
|
91
|
+
return name || fallback;
|
|
92
|
+
}
|
|
87
93
|
/**
|
|
88
94
|
* Extracts measurements from OHT report exams by processing each exam through biomarker mapping,
|
|
89
95
|
* transformation rules, and value extraction.
|
|
@@ -204,7 +210,7 @@ let filename = '';
|
|
|
204
210
|
* - `isReportCorrectlyParsed`: Boolean indicating if all measurements were parsed correctly
|
|
205
211
|
*
|
|
206
212
|
* ## Error Handling:
|
|
207
|
-
* - All errors are
|
|
213
|
+
* - All errors are recorded via `parsingErrorService.record()`
|
|
208
214
|
* - Errors are categorized by destination (slack, notes, bi)
|
|
209
215
|
* - Processing continues even if individual exams fail
|
|
210
216
|
* - Errors are logged with context (filename, labKey, ohtBmId, etc.)
|
|
@@ -224,12 +230,11 @@ let filename = '';
|
|
|
224
230
|
* @param allowMultiMeasurementsPerBiomarker - Whether to allow multiple measurements per biomarker ID
|
|
225
231
|
* @param ohtCoreApiKey - API key for OHT Core API calls
|
|
226
232
|
* @param partnerId - Partner ID for fetching biomarker mappings and synonym units
|
|
227
|
-
* @param errorMessages - Array to accumulate error messages (modified in-place)
|
|
228
233
|
* @param isReportPreview - isReportPreview Report Simulator
|
|
229
234
|
* @param partnerCustomization - `panelCustomisation` and `reportCustomisation` coming from `partnerConfig`.
|
|
230
235
|
* @returns Promise resolving to extraction result with measurements, unknownMeasurements, unknownUnits, unmappedLabKeys, and parsing status
|
|
231
236
|
*/
|
|
232
|
-
async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFilename, patientInfo, documentDate, allowMultiMeasurementsPerBiomarker, ohtCoreApiKey, partnerId,
|
|
237
|
+
async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFilename, patientInfo, documentDate, allowMultiMeasurementsPerBiomarker, ohtCoreApiKey, partnerId, partnerCustomization) {
|
|
233
238
|
filename = sourceFilename;
|
|
234
239
|
const measurements = [];
|
|
235
240
|
const unknownMeasurements = [];
|
|
@@ -241,9 +246,8 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
241
246
|
if (labKeys.length === 0) {
|
|
242
247
|
const errorMsg = `No lab keys found, filename: ${(0, processingLogger_service_1.getRequestScopedFilename)(filename)}`;
|
|
243
248
|
processingLogger_service_1.processingLogger.logError(errorMsg);
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
message: errorMsg,
|
|
249
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.NO_LAB_KEYS, {
|
|
250
|
+
messageSuffix: (0, processingLogger_service_1.getRequestScopedFilename)(filename),
|
|
247
251
|
});
|
|
248
252
|
return {
|
|
249
253
|
measurements,
|
|
@@ -390,16 +394,10 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
390
394
|
let isMeasurementCorrectlyParsed = true;
|
|
391
395
|
// if BM is already in measurements and multiple measurements are not allowed, continue to the next one
|
|
392
396
|
if (!allowMultiMeasurementsPerBiomarker && measurements.some(measurement => measurement.biomarkerId === finalOhtBmId)) {
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
data: { ohtBmId: finalOhtBmId, labKey },
|
|
398
|
-
});
|
|
399
|
-
errorMessages.push({
|
|
400
|
-
destination: { slack: false, notes: false, bi: true },
|
|
401
|
-
message: `Biomarkers Duplicated keys:[PLACEHOLDER]`,
|
|
402
|
-
item: `bmId:${finalOhtBmId}, labKey:${transformedExamObj.labKey}`
|
|
397
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.DUPLICATE_BIOMARKER, {
|
|
398
|
+
labKey: transformedExamObj.labKey,
|
|
399
|
+
biomarkerId: finalOhtBmId,
|
|
400
|
+
item: `bmId:${finalOhtBmId}, labKey:${transformedExamObj.labKey}`,
|
|
403
401
|
});
|
|
404
402
|
continue;
|
|
405
403
|
}
|
|
@@ -409,16 +407,11 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
409
407
|
`name:${ohtBiomarker.acf.shortName}, bmId:${finalOhtBmId}, labKey:${transformedExamObj.labKey}` :
|
|
410
408
|
`bmId:${finalOhtBmId}, labKey:${transformedExamObj.labKey}`;
|
|
411
409
|
if (!ohtBiomarker) {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
});
|
|
418
|
-
errorMessages.push({
|
|
419
|
-
destination: { slack: true, notes: true, bi: true },
|
|
420
|
-
message: `Biomarker not found for:[PLACEHOLDER]`,
|
|
421
|
-
item: `${bmInfo}`
|
|
410
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.BIOMARKER_NOT_FOUND, {
|
|
411
|
+
labKey: transformedExamObj.labKey,
|
|
412
|
+
biomarkerId: finalOhtBmId,
|
|
413
|
+
item: `${bmInfo}`,
|
|
414
|
+
errorTrace: { ohtBmId: finalOhtBmId, labKey: transformedExamObj.labKey },
|
|
422
415
|
});
|
|
423
416
|
continue;
|
|
424
417
|
}
|
|
@@ -440,24 +433,26 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
440
433
|
});
|
|
441
434
|
}
|
|
442
435
|
if (!isUnitParsedCorrectly) {
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
});
|
|
449
|
-
errorMessages.push({
|
|
450
|
-
destination: { slack: true, notes: true, bi: true },
|
|
451
|
-
message: `Unit not extracted correctly for:[PLACEHOLDER]`,
|
|
452
|
-
item: `${bmInfo}, unit:${unit}`
|
|
436
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.UNIT_NOT_EXTRACTED, {
|
|
437
|
+
labKey: transformedExamObj.labKey,
|
|
438
|
+
biomarkerId: finalOhtBmId,
|
|
439
|
+
item: `${bmInfo}, unit:${unknownUnit}`,
|
|
440
|
+
errorTrace: { unknownUnit },
|
|
453
441
|
});
|
|
454
442
|
isMeasurementCorrectlyParsed = false;
|
|
455
443
|
}
|
|
456
444
|
let { valueType, alphanumericalValue, numberValue, valueComparator, isValueParsedCorrectly } = (0, extractionUtils_1.ohtReportParseExamValue)(transformedExamObj, ohtBiomarker);
|
|
457
445
|
if ((0, dataUtils_1.isNumericalWithoutValidResult)(valueType, numberValue, alphanumericalValue)) {
|
|
458
446
|
const alphanumericalValueTrimmed = alphanumericalValue?.trim() ?? '';
|
|
447
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.NUMERIC_BIOMARKER_ALPHANUMERIC_VALUE, {
|
|
448
|
+
labKey: transformedExamObj.labKey,
|
|
449
|
+
biomarkerId: finalOhtBmId,
|
|
450
|
+
item: `${bmInfo}, value:${alphanumericalValueTrimmed}`,
|
|
451
|
+
ohtExam: transformedExamObj,
|
|
452
|
+
originalExam: originalExam ?? undefined,
|
|
453
|
+
});
|
|
459
454
|
const unknownMeasurement = {
|
|
460
|
-
biomarkerName: transformedExamObj.description
|
|
455
|
+
biomarkerName: resolveUnknownMeasurementName([transformedExamObj.description], transformedExamObj.labKey || labKey || '(unmapped measurement)'),
|
|
461
456
|
value: alphanumericalValueTrimmed,
|
|
462
457
|
unit: unit ?? '',
|
|
463
458
|
annotation: transformedExamObj.annotation ?? '',
|
|
@@ -477,17 +472,14 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
477
472
|
unknownMeasurements.push(unknownMeasurement);
|
|
478
473
|
continue;
|
|
479
474
|
}
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
destination: { slack: true, notes: true, bi: true },
|
|
489
|
-
message: `Value not extracted correctly for:[PLACEHOLDER]`,
|
|
490
|
-
item: `${bmInfo}, value:${numberValue}${unit}`
|
|
475
|
+
// GROUPED_ biomarkers derive their display value from appended annotation (rangeAnnotation),
|
|
476
|
+
// not from syntheticValue — an empty syntheticValue is expected and must not trigger this error.
|
|
477
|
+
if (!isValueParsedCorrectly && !labKey.startsWith('GROUPED_')) {
|
|
478
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.VALUE_NOT_EXTRACTED, {
|
|
479
|
+
labKey: transformedExamObj.labKey,
|
|
480
|
+
biomarkerId: finalOhtBmId,
|
|
481
|
+
item: `${bmInfo}, value:${alphanumericalValue ?? numberValue}${unit !== 'None' ? unit : ''}`,
|
|
482
|
+
errorTrace: { numberValue, alphanumericalValue, unit },
|
|
491
483
|
});
|
|
492
484
|
isMeasurementCorrectlyParsed = false;
|
|
493
485
|
}
|
|
@@ -495,10 +487,12 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
495
487
|
if (isValueParsedCorrectly && valueType === 'NUMERICAL') {
|
|
496
488
|
const isPlausibleValue = numberValue !== null && (0, extractionUtils_1.ohtReportCheckValueForPlausibleValues)(finalOhtBmId, transformedExamObj.labKey, ohtBiomarker, unit, numberValue, isUnitParsedCorrectly, filename);
|
|
497
489
|
if (!isPlausibleValue) {
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
item: `${bmInfo}, value:${numberValue}${unit}
|
|
490
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.VALUE_NOT_PLAUSIBLE, {
|
|
491
|
+
labKey: transformedExamObj.labKey,
|
|
492
|
+
biomarkerId: finalOhtBmId,
|
|
493
|
+
item: `${bmInfo}, value:${numberValue}${unit}`,
|
|
494
|
+
ohtExam: transformedExamObj,
|
|
495
|
+
originalExam: originalExam ?? undefined,
|
|
502
496
|
});
|
|
503
497
|
// Resolve name with fallbacks
|
|
504
498
|
const implausibleName = transformedExamObj.examName ||
|
|
@@ -547,16 +541,10 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
547
541
|
to = extractedRange.to ?? null;
|
|
548
542
|
isRangeParsedCorrectly = extractedRange.isRangeParsedCorrectly;
|
|
549
543
|
if (!isRangeParsedCorrectly) {
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
data: { ohtBmId: finalOhtBmId, labKey },
|
|
555
|
-
});
|
|
556
|
-
errorMessages.push({
|
|
557
|
-
destination: { slack: true, notes: true, bi: true },
|
|
558
|
-
message: `Range not extracted correctly for:[PLACEHOLDER]`,
|
|
559
|
-
item: `${bmInfo}`
|
|
544
|
+
parsingErrorService_service_1.parsingErrorService.record(error_types_1.ParsingErrorType.RANGE_NOT_EXTRACTED, {
|
|
545
|
+
labKey: transformedExamObj.labKey,
|
|
546
|
+
biomarkerId: finalOhtBmId,
|
|
547
|
+
item: `${bmInfo}`,
|
|
560
548
|
});
|
|
561
549
|
isMeasurementCorrectlyParsed = false;
|
|
562
550
|
}
|
|
@@ -621,7 +609,7 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
621
609
|
continue;
|
|
622
610
|
}
|
|
623
611
|
// No mapping or ohtBmId === -1: create unknownMeasurement
|
|
624
|
-
const unknownMeasurementName =
|
|
612
|
+
const unknownMeasurementName = resolveUnknownMeasurementName([transformedExamObj.mnemonic, transformedExamObj.examName], labKey || '(unmapped measurement)');
|
|
625
613
|
const originalName = labKey.split(':')[1] || transformedExamObj.examName;
|
|
626
614
|
const annotation = `${transformedExamObj.annotation || ''}`;
|
|
627
615
|
const dataOrigin = {
|
|
@@ -657,7 +645,7 @@ async function ohtReportMeasurementsExtractor(isReportPreview, exams, sourceFile
|
|
|
657
645
|
backend_mapped_biomarkers: backendMappedCount,
|
|
658
646
|
unmapped_biomarkers: unmappedCount,
|
|
659
647
|
total_processed: exams.length,
|
|
660
|
-
errors:
|
|
648
|
+
errors: parsingErrorService_service_1.parsingErrorService.getLocalErrors().length,
|
|
661
649
|
});
|
|
662
650
|
return {
|
|
663
651
|
measurements,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ohtReportMeasurementsExtractor.service.js","sourceRoot":"","sources":["../../service/ohtReportMeasurementsExtractor.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ohtReportMeasurementsExtractor.service.js","sourceRoot":"","sources":["../../service/ohtReportMeasurementsExtractor.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request-scoped parsing error collector for agnostic-parser.
|
|
3
|
+
*
|
|
4
|
+
* Layer 1 (local): in-memory errors → ingestion notes, Slack, processingLogger.
|
|
5
|
+
* Layer 2 (Core): grouped profiles flushed at end of run via runWithContextAsync finally.
|
|
6
|
+
*
|
|
7
|
+
* Call sites use record() only — do not duplicate processingLogger.addWarning/addError.
|
|
8
|
+
*/
|
|
9
|
+
import { LocalParsingError, ErrorProfilePayload, ParsingErrorType, RecordParsingErrorDetails, RecordParsingErrorOptions } from '../types/error.types';
|
|
10
|
+
import { ProcessingContext } from './processingLogger.service';
|
|
11
|
+
declare class ParsingErrorService {
|
|
12
|
+
/** Called from runWithContextAsync — do not use directly in parsers. */
|
|
13
|
+
initRequestState(requestId: string): void;
|
|
14
|
+
clearRequestState(requestId: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* Single entry point for parsing issues.
|
|
17
|
+
* Resolves message/clientMessage from catalog + details, stores Layer 1, syncs logger once.
|
|
18
|
+
*/
|
|
19
|
+
record(errorType: ParsingErrorType, details?: RecordParsingErrorDetails, options?: RecordParsingErrorOptions): LocalParsingError;
|
|
20
|
+
getLocalErrors(): LocalParsingError[];
|
|
21
|
+
getAggregatedNotes(): string;
|
|
22
|
+
getAggregatedSlack(): string;
|
|
23
|
+
sendSlackIfNeeded(ohapiUrl: string, partnerName: string, fileUploadId: string): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Groups local errors by (errorType, contextKey).
|
|
26
|
+
* Technical message → occurrence snapshot; clientMessage → profile message.
|
|
27
|
+
*/
|
|
28
|
+
buildCorePayloads(ctx: ProcessingContext): ErrorProfilePayload[];
|
|
29
|
+
/**
|
|
30
|
+
* POST grouped profiles to Core. Called from runWithContextAsync finally.
|
|
31
|
+
* No-op when empty, preview, or missing partner/api key. Never throws.
|
|
32
|
+
*/
|
|
33
|
+
flushToCoreSafe(): Promise<void>;
|
|
34
|
+
clear(): void;
|
|
35
|
+
}
|
|
36
|
+
export declare const parsingErrorService: ParsingErrorService;
|
|
37
|
+
/** Lifecycle hooks used by processingLogger.runWithContextAsync. */
|
|
38
|
+
export declare function initParsingErrorRequestState(context: ProcessingContext): string;
|
|
39
|
+
export declare function clearParsingErrorRequestState(requestId: string): void;
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parsingErrorService = void 0;
|
|
4
|
+
exports.initParsingErrorRequestState = initParsingErrorRequestState;
|
|
5
|
+
exports.clearParsingErrorRequestState = clearParsingErrorRequestState;
|
|
6
|
+
/**
|
|
7
|
+
* Request-scoped parsing error collector for agnostic-parser.
|
|
8
|
+
*
|
|
9
|
+
* Layer 1 (local): in-memory errors → ingestion notes, Slack, processingLogger.
|
|
10
|
+
* Layer 2 (Core): grouped profiles flushed at end of run via runWithContextAsync finally.
|
|
11
|
+
*
|
|
12
|
+
* Call sites use record() only — do not duplicate processingLogger.addWarning/addError.
|
|
13
|
+
*/
|
|
14
|
+
const error_types_1 = require("../types/error.types");
|
|
15
|
+
const dataUtils_1 = require("../util-ts/dataUtils");
|
|
16
|
+
const processingLogger_service_1 = require("./processingLogger.service");
|
|
17
|
+
const errorHandling_service_1 = require("./errorHandling.service");
|
|
18
|
+
const slackMessages_service_1 = require("./slackMessages.service");
|
|
19
|
+
// One state bag per request — keyed by the same id as processingLogger (ALS).
|
|
20
|
+
const parsingErrorStateRegistry = new Map();
|
|
21
|
+
function createEmptyParsingErrorState() {
|
|
22
|
+
return { localErrors: [] };
|
|
23
|
+
}
|
|
24
|
+
const SEVERITY_RANK = {
|
|
25
|
+
warning: 1,
|
|
26
|
+
error: 2,
|
|
27
|
+
critical: 3,
|
|
28
|
+
};
|
|
29
|
+
function maxParsingErrorSeverity(a, b) {
|
|
30
|
+
return SEVERITY_RANK[a] >= SEVERITY_RANK[b] ? a : b;
|
|
31
|
+
}
|
|
32
|
+
function getMutableState() {
|
|
33
|
+
const requestId = (0, processingLogger_service_1.getCurrentRequestId)();
|
|
34
|
+
if (requestId == null) {
|
|
35
|
+
return createEmptyParsingErrorState();
|
|
36
|
+
}
|
|
37
|
+
const state = parsingErrorStateRegistry.get(requestId);
|
|
38
|
+
if (state === undefined) {
|
|
39
|
+
return createEmptyParsingErrorState();
|
|
40
|
+
}
|
|
41
|
+
return state;
|
|
42
|
+
}
|
|
43
|
+
/** Maps a LocalParsingError to a single processingLogger call (severity → warning/error). */
|
|
44
|
+
function syncToProcessingLogger(localError) {
|
|
45
|
+
const catalog = error_types_1.PARSING_ERROR_CATALOG[localError.errorType];
|
|
46
|
+
if (localError.severity === 'critical') {
|
|
47
|
+
const rejectReason = localError.rejectReason ?? catalog.rejectReason;
|
|
48
|
+
processingLogger_service_1.processingLogger.addError(new Error(localError.message), localError.pipelineStep, {
|
|
49
|
+
rejectReason,
|
|
50
|
+
errorCode: localError.errorType,
|
|
51
|
+
});
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const warningSeverity = localError.severity === 'error' ? 'degraded' : 'info';
|
|
55
|
+
processingLogger_service_1.processingLogger.addWarning(localError.message, localError.pipelineStep, {
|
|
56
|
+
warningType: catalog.warningType ?? 'parsing_error',
|
|
57
|
+
warningCategory: catalog.warningCategory ?? 'general',
|
|
58
|
+
warningSeverity,
|
|
59
|
+
data: localError.errorTrace,
|
|
60
|
+
warningCode: localError.errorType,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** Adapts Layer 1 errors to legacy aggregateMessages() shape for notes/Slack. */
|
|
64
|
+
function localErrorsToErrorMessages(localErrors, channel) {
|
|
65
|
+
return localErrors
|
|
66
|
+
.filter((error) => error.destinations[channel])
|
|
67
|
+
.map((error) => ({
|
|
68
|
+
destination: error.destinations,
|
|
69
|
+
message: error.message,
|
|
70
|
+
item: error.item,
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
class ParsingErrorService {
|
|
74
|
+
/** Called from runWithContextAsync — do not use directly in parsers. */
|
|
75
|
+
initRequestState(requestId) {
|
|
76
|
+
parsingErrorStateRegistry.set(requestId, createEmptyParsingErrorState());
|
|
77
|
+
}
|
|
78
|
+
clearRequestState(requestId) {
|
|
79
|
+
parsingErrorStateRegistry.delete(requestId);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Single entry point for parsing issues.
|
|
83
|
+
* Resolves message/clientMessage from catalog + details, stores Layer 1, syncs logger once.
|
|
84
|
+
*/
|
|
85
|
+
record(errorType, details, options) {
|
|
86
|
+
const catalog = error_types_1.PARSING_ERROR_CATALOG[errorType];
|
|
87
|
+
const severity = details?.severity ?? catalog.severity;
|
|
88
|
+
const pipelineStep = details?.pipelineStep ?? catalog.pipelineStep;
|
|
89
|
+
const contextKey = (0, error_types_1.resolveParsingErrorContextKey)(catalog.contextKey, details);
|
|
90
|
+
const message = (0, error_types_1.buildParsingErrorMessage)(catalog.message, details);
|
|
91
|
+
const rejectReason = details?.rejectReason ?? catalog.rejectReason;
|
|
92
|
+
const destinations = {
|
|
93
|
+
slack: options?.notifySlack ?? details?.destinations?.slack ?? catalog.destinations.slack,
|
|
94
|
+
notes: options?.notifyNotes ?? details?.destinations?.notes ?? catalog.destinations.notes,
|
|
95
|
+
bi: options?.notifyBi ?? details?.destinations?.bi ?? catalog.destinations.bi,
|
|
96
|
+
};
|
|
97
|
+
const localError = {
|
|
98
|
+
errorType,
|
|
99
|
+
severity,
|
|
100
|
+
message,
|
|
101
|
+
clientMessage: catalog.clientMessage,
|
|
102
|
+
pipelineStep,
|
|
103
|
+
contextKey,
|
|
104
|
+
item: details?.item,
|
|
105
|
+
destinations,
|
|
106
|
+
rejectReason,
|
|
107
|
+
biomarkerId: details?.biomarkerId,
|
|
108
|
+
biomarkerName: details?.biomarkerName,
|
|
109
|
+
errorTrace: details?.errorTrace,
|
|
110
|
+
ohtExam: details?.ohtExam,
|
|
111
|
+
originalExam: details?.originalExam,
|
|
112
|
+
timestamp: new Date(),
|
|
113
|
+
};
|
|
114
|
+
getMutableState().localErrors.push(localError);
|
|
115
|
+
syncToProcessingLogger(localError);
|
|
116
|
+
return localError;
|
|
117
|
+
}
|
|
118
|
+
getLocalErrors() {
|
|
119
|
+
return [...getMutableState().localErrors];
|
|
120
|
+
}
|
|
121
|
+
// --- Layer 1 outputs (not persisted to Core) ---
|
|
122
|
+
getAggregatedNotes() {
|
|
123
|
+
return (0, errorHandling_service_1.aggregateMessages)(localErrorsToErrorMessages(getMutableState().localErrors, 'notes'), 'notes');
|
|
124
|
+
}
|
|
125
|
+
getAggregatedSlack() {
|
|
126
|
+
return (0, errorHandling_service_1.aggregateMessages)(localErrorsToErrorMessages(getMutableState().localErrors, 'slack'), 'slack');
|
|
127
|
+
}
|
|
128
|
+
async sendSlackIfNeeded(ohapiUrl, partnerName, fileUploadId) {
|
|
129
|
+
const slackText = this.getAggregatedSlack();
|
|
130
|
+
if (!slackText.trim()) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const fileUrl = `${ohapiUrl}/data-import/file-uploads/${fileUploadId}`;
|
|
134
|
+
const slackMsg = (0, slackMessages_service_1.getSlackFileIssueNotificationMessage)(slackText, `AgnosticParser [${partnerName}]`, fileUrl);
|
|
135
|
+
if (slackMsg.blocks[3].text.text.trim() !== '') {
|
|
136
|
+
await (0, slackMessages_service_1.sendMessageToSlack)(slackMsg);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// --- Layer 2: bulk payload for oht-core PartnerErrorProfiles ---
|
|
140
|
+
/**
|
|
141
|
+
* Groups local errors by (errorType, contextKey).
|
|
142
|
+
* Technical message → occurrence snapshot; clientMessage → profile message.
|
|
143
|
+
*/
|
|
144
|
+
buildCorePayloads(ctx) {
|
|
145
|
+
const localErrors = getMutableState().localErrors;
|
|
146
|
+
if (localErrors.length === 0) {
|
|
147
|
+
return [];
|
|
148
|
+
}
|
|
149
|
+
const groups = new Map();
|
|
150
|
+
for (const error of localErrors) {
|
|
151
|
+
const key = `${error.errorType}::${error.contextKey}`;
|
|
152
|
+
const group = groups.get(key);
|
|
153
|
+
if (group) {
|
|
154
|
+
group.push(error);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
groups.set(key, [error]);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const fileUploadId = ctx.fileUploadId ?? '000000000000000000000001';
|
|
161
|
+
const payloads = [];
|
|
162
|
+
for (const group of groups.values()) {
|
|
163
|
+
const representative = group[group.length - 1];
|
|
164
|
+
const severity = group.reduce((max, error) => maxParsingErrorSeverity(max, error.severity), group[0].severity);
|
|
165
|
+
const snapshots = group.map((error) => ({
|
|
166
|
+
dataImportFileUploadId: fileUploadId,
|
|
167
|
+
message: error.message,
|
|
168
|
+
pipelineStep: error.pipelineStep,
|
|
169
|
+
severity: error.severity,
|
|
170
|
+
rejectReason: error.rejectReason ?? null,
|
|
171
|
+
errorTrace: error.errorTrace,
|
|
172
|
+
occurredAt: error.timestamp.toISOString(),
|
|
173
|
+
}));
|
|
174
|
+
const payload = {
|
|
175
|
+
contextKey: representative.contextKey,
|
|
176
|
+
issueType: representative.errorType,
|
|
177
|
+
severity,
|
|
178
|
+
message: representative.clientMessage,
|
|
179
|
+
pipelineStep: representative.pipelineStep,
|
|
180
|
+
rejectReason: representative.rejectReason ?? null,
|
|
181
|
+
biomarkerId: representative.biomarkerId,
|
|
182
|
+
biomarkerName: representative.biomarkerName,
|
|
183
|
+
errorTrace: representative.errorTrace,
|
|
184
|
+
ohtExam: representative.ohtExam,
|
|
185
|
+
originalExam: representative.originalExam,
|
|
186
|
+
source: 'AgnosticParser',
|
|
187
|
+
uploadedByUserId: ctx.uploadedByUserId,
|
|
188
|
+
};
|
|
189
|
+
if (group.length === 1) {
|
|
190
|
+
payload.occurrence = snapshots[0];
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
payload.occurrences = snapshots;
|
|
194
|
+
payload.occurrencesCount = group.length;
|
|
195
|
+
}
|
|
196
|
+
payloads.push(payload);
|
|
197
|
+
}
|
|
198
|
+
return payloads;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* POST grouped profiles to Core. Called from runWithContextAsync finally.
|
|
202
|
+
* No-op when empty, preview, or missing partner/api key. Never throws.
|
|
203
|
+
*/
|
|
204
|
+
async flushToCoreSafe() {
|
|
205
|
+
const state = getMutableState();
|
|
206
|
+
if (state.localErrors.length === 0) {
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const loggerState = processingLogger_service_1.processingLogger.getState();
|
|
210
|
+
const partnerId = loggerState.partnerId;
|
|
211
|
+
const isPreview = loggerState.isPreview ?? false;
|
|
212
|
+
if (!partnerId || isPreview) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
const apiKey = process.env.OHT_CORE_AGNOSTIC_PARSER_API_KEY;
|
|
216
|
+
if (!apiKey) {
|
|
217
|
+
processingLogger_service_1.processingLogger.logError('Missing OHT_CORE_AGNOSTIC_PARSER_API_KEY; skipping parsing error profile flush', undefined, { partner_id: partnerId });
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const ctx = {
|
|
221
|
+
fileUploadId: loggerState.fileUploadId,
|
|
222
|
+
partnerId,
|
|
223
|
+
uploadedByUserId: loggerState.uploadedByUserId,
|
|
224
|
+
isPreview,
|
|
225
|
+
};
|
|
226
|
+
try {
|
|
227
|
+
const payloads = this.buildCorePayloads(ctx);
|
|
228
|
+
if (payloads.length === 0) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
await (0, dataUtils_1.bulkUpsertCustomParserErrorProfiles)(partnerId, payloads, apiKey);
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
processingLogger_service_1.processingLogger.logError('Failed to flush parsing error profiles to Core', error instanceof Error ? error : undefined, { partner_id: partnerId });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
clear() {
|
|
238
|
+
getMutableState().localErrors.length = 0;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
exports.parsingErrorService = new ParsingErrorService();
|
|
242
|
+
/** Lifecycle hooks used by processingLogger.runWithContextAsync. */
|
|
243
|
+
function initParsingErrorRequestState(context) {
|
|
244
|
+
const requestId = (0, processingLogger_service_1.getRequestIdFromContext)(context);
|
|
245
|
+
exports.parsingErrorService.initRequestState(requestId);
|
|
246
|
+
return requestId;
|
|
247
|
+
}
|
|
248
|
+
function clearParsingErrorRequestState(requestId) {
|
|
249
|
+
exports.parsingErrorService.clearRequestState(requestId);
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=parsingErrorService.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsingErrorService.service.js","sourceRoot":"","sources":["../../service/parsingErrorService.service.ts"],"names":[],"mappings":"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"}
|