@openhealth/oht-custom-parser-lib 0.3.11 → 0.3.14
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 +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/service/processingLogger.service.d.ts +27 -38
- package/dist/service/processingLogger.service.js +148 -117
- package/dist/service/processingLogger.service.js.map +1 -1
- package/package.json +4 -2
- package/readme.md +11 -0
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export { AcfBiomarkerRangeAnnotationCheck, AcfBiomarkerGenericDisclaimerLogic, M
|
|
|
10
10
|
export { ErrorMessage, ErrorCode, ERROR_CATALOG, ERROR_MESSAGES, getErrorMessage, getRejectReason, } from './types/error.types';
|
|
11
11
|
export { handleError, ValidationError, shouldSendSlackNotification, extractFormattedRejectReason, mapErrorToRejectReason, } from './service/fileUploadErrorHandler.service';
|
|
12
12
|
export type { TransformationRule, TransformationContext, ApplyRulesResult as TransformationApplyRulesResult, ApplyRulesOptions as TransformationApplyRulesOptions, ValidationResult as TransformationValidationResult, } from './types/transformationRules.types';
|
|
13
|
-
export { processingLogger, ProcessingContext, StageDuration, runWithContext, runWithContextAsync, } from './service/processingLogger.service';
|
|
13
|
+
export { processingLogger, ProcessingContext, StageDuration, getRequestIdFromContext, runWithContext, runWithContextAsync, } from './service/processingLogger.service';
|
|
14
14
|
export { makeApiCallWithRetry, parseErrorObj } from './util-ts/apiUtils';
|
|
15
15
|
export { extractValue, isBiomarkerValueNumerical, isBiomarkerExternalNoVisualRange, processAppendedMappings, fetchSynonymUnits, resolveUnitFromSynonyms, extractFromPath, applyFormat } from './util-ts/dataUtils';
|
|
16
16
|
export { readFileFromBucket, uploadFileBufferToGCS } from './util-ts/googleStorageUtils';
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.processingLogger = exports.mapErrorToRejectReason = exports.extractFormattedRejectReason = exports.shouldSendSlackNotification = exports.ValidationError = exports.handleError = exports.getRejectReason = exports.getErrorMessage = exports.ERROR_MESSAGES = exports.ERROR_CATALOG = exports.ErrorCode = exports.RejectReason = exports.UploadType = exports.Sex = exports.DataImportFileUploadStatus = exports.BiomarkerValueType = exports.MeasurementValueComparator = exports.DigitizationStatus = exports.PipelineStep = exports.ReferenceRangeType = exports.BiomarkerCompatibility = exports.ManualCheck = exports.AcfBiomarkerGenericDisclaimerLogic = exports.AcfBiomarkerRangeAnnotationCheck = exports.unitSynonyms = exports.validateTransformationRuleExpression = exports.applyTransformationRules = exports.generateBIMessages = exports.publishToTopic = exports.aggregateBiMessages = exports.aggregateMessages = exports.sendMessageToSlack = exports.getSlackFileIssueNotificationMessage = exports.extractValueFromGreaterLowerThan = exports.extractUnit = exports.getRangeFromPositionAndRegex = exports.parseExamValue = exports.extractReferenceAnnotation = exports.extractReferenceRanges = exports.checkValueForPlausibleValues = exports.ohtMeasurementsExtractor = exports.ohtReportMeasurementsExtractor = exports.postFileUploadSetStatus = exports.queryFileUploadsWithFilters = exports.handleRejection = exports.isPatientAgeValid = exports.parseGender = exports.parseExternalPatientId = exports.postReportPreviewToCore = exports.postDataImportFileUploadToCore = void 0;
|
|
7
|
-
exports.parseRange = exports.getMappedBiomarkersLatest = exports.getMappedBiomarkers = exports.getLowerThanPatterns = exports.getGreaterThanPatterns = exports.pinoLogger = exports.uploadFileBufferToGCS = exports.readFileFromBucket = exports.applyFormat = exports.extractFromPath = exports.resolveUnitFromSynonyms = exports.fetchSynonymUnits = exports.processAppendedMappings = exports.isBiomarkerExternalNoVisualRange = exports.isBiomarkerValueNumerical = exports.extractValue = exports.parseErrorObj = exports.makeApiCallWithRetry = exports.runWithContextAsync = exports.runWithContext = void 0;
|
|
7
|
+
exports.parseRange = exports.getMappedBiomarkersLatest = exports.getMappedBiomarkers = exports.getLowerThanPatterns = exports.getGreaterThanPatterns = exports.pinoLogger = exports.uploadFileBufferToGCS = exports.readFileFromBucket = exports.applyFormat = exports.extractFromPath = exports.resolveUnitFromSynonyms = exports.fetchSynonymUnits = exports.processAppendedMappings = exports.isBiomarkerExternalNoVisualRange = exports.isBiomarkerValueNumerical = exports.extractValue = exports.parseErrorObj = exports.makeApiCallWithRetry = exports.runWithContextAsync = exports.runWithContext = exports.getRequestIdFromContext = void 0;
|
|
8
8
|
// ### SERVICES ###
|
|
9
9
|
var reportCreator_service_1 = require("./service/reportCreator.service");
|
|
10
10
|
Object.defineProperty(exports, "postDataImportFileUploadToCore", { enumerable: true, get: function () { return reportCreator_service_1.postDataImportFileUploadToCore; } });
|
|
@@ -70,6 +70,7 @@ Object.defineProperty(exports, "mapErrorToRejectReason", { enumerable: true, get
|
|
|
70
70
|
// ### PROCESSING LOGGER ###
|
|
71
71
|
var processingLogger_service_1 = require("./service/processingLogger.service");
|
|
72
72
|
Object.defineProperty(exports, "processingLogger", { enumerable: true, get: function () { return processingLogger_service_1.processingLogger; } });
|
|
73
|
+
Object.defineProperty(exports, "getRequestIdFromContext", { enumerable: true, get: function () { return processingLogger_service_1.getRequestIdFromContext; } });
|
|
73
74
|
Object.defineProperty(exports, "runWithContext", { enumerable: true, get: function () { return processingLogger_service_1.runWithContext; } });
|
|
74
75
|
Object.defineProperty(exports, "runWithContextAsync", { enumerable: true, get: function () { return processingLogger_service_1.runWithContextAsync; } });
|
|
75
76
|
// ### UTIL-TS ###
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;AAAA,mBAAmB;AACnB,yEAGyC;AAFvC,uIAAA,8BAA8B,OAAA;AAC9B,gIAAA,uBAAuB,OAAA;AAEzB,mFAQ8C;AAP5C,oIAAA,sBAAsB,OAAA;AACtB,yHAAA,WAAW,OAAA;AACX,+HAAA,iBAAiB,OAAA;AACjB,6HAAA,eAAe,OAAA;AACf,yIAAA,2BAA2B,OAAA;AAC3B,qIAAA,uBAAuB,OAAA;AAIzB,2GAE0D;AADxD,wJAAA,8BAA8B,OAAA;AAGhC,+FASoD;AARlD,4IAAA,wBAAwB,OAAA;AACxB,gJAAA,4BAA4B,OAAA;AAC5B,0IAAA,sBAAsB,OAAA;AACtB,8IAAA,0BAA0B,OAAA;AAC1B,kIAAA,cAAc,OAAA;AACd,gJAAA,4BAA4B,OAAA;AAC5B,+HAAA,WAAW,OAAA;AACX,oJAAA,gCAAgC,OAAA;AAGlC,yEAEyC;AADvC,6IAAA,oCAAoC,OAAA;AAAE,2HAAA,kBAAkB,OAAA;AAE1D,yEAKyC;AAJvC,0HAAA,iBAAiB,OAAA;AACjB,4HAAA,mBAAmB,OAAA;AACnB,uHAAA,cAAc,OAAA;AACd,2HAAA,kBAAkB,OAAA;AAEpB,qFAG+C;AAF7C,uIAAA,UAAU,OAA4B;AACtC,mJAAA,yBAAyB,OAAwC;AAGnE,gBAAgB;AAChB,mEAaqC;AAJnC,mHAAA,YAAY,OAAA;AAKd,+CAsC2B;AArCzB,6HAAA,gCAAgC,OAAA;AAChC,+HAAA,kCAAkC,OAAA;AAClC,wGAAA,WAAW,OAAA;AACX,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAOlB,yGAAA,YAAY,OAAA;AACZ,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,gGAAA,GAAG,OAAA;AAgBH,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AAKd,mDAO6B;AAL3B,wGAAA,SAAS,OAAA;AACT,4GAAA,aAAa,OAAA;AACb,6GAAA,cAAc,OAAA;AACd,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AAEjB,2FAMkD;AALhD,6HAAA,WAAW,OAAA;AACX,iIAAA,eAAe,OAAA;AACf,6IAAA,2BAA2B,OAAA;AAC3B,8IAAA,4BAA4B,OAAA;AAC5B,wIAAA,sBAAsB,OAAA;AAUxB,4BAA4B;AAC5B,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;AAAA,mBAAmB;AACnB,yEAGyC;AAFvC,uIAAA,8BAA8B,OAAA;AAC9B,gIAAA,uBAAuB,OAAA;AAEzB,mFAQ8C;AAP5C,oIAAA,sBAAsB,OAAA;AACtB,yHAAA,WAAW,OAAA;AACX,+HAAA,iBAAiB,OAAA;AACjB,6HAAA,eAAe,OAAA;AACf,yIAAA,2BAA2B,OAAA;AAC3B,qIAAA,uBAAuB,OAAA;AAIzB,2GAE0D;AADxD,wJAAA,8BAA8B,OAAA;AAGhC,+FASoD;AARlD,4IAAA,wBAAwB,OAAA;AACxB,gJAAA,4BAA4B,OAAA;AAC5B,0IAAA,sBAAsB,OAAA;AACtB,8IAAA,0BAA0B,OAAA;AAC1B,kIAAA,cAAc,OAAA;AACd,gJAAA,4BAA4B,OAAA;AAC5B,+HAAA,WAAW,OAAA;AACX,oJAAA,gCAAgC,OAAA;AAGlC,yEAEyC;AADvC,6IAAA,oCAAoC,OAAA;AAAE,2HAAA,kBAAkB,OAAA;AAE1D,yEAKyC;AAJvC,0HAAA,iBAAiB,OAAA;AACjB,4HAAA,mBAAmB,OAAA;AACnB,uHAAA,cAAc,OAAA;AACd,2HAAA,kBAAkB,OAAA;AAEpB,qFAG+C;AAF7C,uIAAA,UAAU,OAA4B;AACtC,mJAAA,yBAAyB,OAAwC;AAGnE,gBAAgB;AAChB,mEAaqC;AAJnC,mHAAA,YAAY,OAAA;AAKd,+CAsC2B;AArCzB,6HAAA,gCAAgC,OAAA;AAChC,+HAAA,kCAAkC,OAAA;AAClC,wGAAA,WAAW,OAAA;AACX,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAOlB,yGAAA,YAAY,OAAA;AACZ,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,gGAAA,GAAG,OAAA;AAgBH,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AAKd,mDAO6B;AAL3B,wGAAA,SAAS,OAAA;AACT,4GAAA,aAAa,OAAA;AACb,6GAAA,cAAc,OAAA;AACd,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AAEjB,2FAMkD;AALhD,6HAAA,WAAW,OAAA;AACX,iIAAA,eAAe,OAAA;AACf,6IAAA,2BAA2B,OAAA;AAC3B,8IAAA,4BAA4B,OAAA;AAC5B,wIAAA,sBAAsB,OAAA;AAUxB,4BAA4B;AAC5B,+EAO4C;AAN1C,4HAAA,gBAAgB,OAAA;AAGhB,mIAAA,uBAAuB,OAAA;AACvB,0HAAA,cAAc,OAAA;AACd,+HAAA,mBAAmB,OAAA;AAGrB,kBAAkB;AAClB,+CAAuE;AAA/D,gHAAA,oBAAoB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAC3C,iDAAiN;AAAzM,yGAAA,YAAY,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AAAE,6HAAA,gCAAgC,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,wGAAA,WAAW,OAAA;AACpL,mEAAuF;AAA/E,wHAAA,kBAAkB,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AACjD,mDAA2D;AAAnD,yHAAA,OAAO,OAAc;AAC7B,mDAAkF;AAA1E,oHAAA,sBAAsB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AACpD,iDAAmF;AAA3E,gHAAA,mBAAmB,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AACtD,6DAAqD;AAA7C,6GAAA,UAAU,OAAA"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import pino from 'pino';
|
|
2
|
+
/**
|
|
3
|
+
* Returns a stable request id for the given context. Same id must be used for the whole request.
|
|
4
|
+
* Used to key the registry so each request has isolated state.
|
|
5
|
+
*/
|
|
6
|
+
export declare function getRequestIdFromContext(context: ProcessingContext): string;
|
|
2
7
|
/**
|
|
3
8
|
* Processing context interface - contains all context information for a processing cycle
|
|
4
9
|
*/
|
|
@@ -69,57 +74,40 @@ interface ProcessingState {
|
|
|
69
74
|
metadata?: Record<string, any>;
|
|
70
75
|
}
|
|
71
76
|
/**
|
|
72
|
-
* ProcessingLoggerService - Singleton
|
|
77
|
+
* ProcessingLoggerService - Singleton facade for request-scoped processing state and logging.
|
|
78
|
+
*
|
|
79
|
+
* State is keyed by request id (fileUploadId ?? messageId ?? cloudEventId) in a registry.
|
|
80
|
+
* AsyncLocalStorage holds only the current request id; getMutableState() resolves state via
|
|
81
|
+
* registry.get(id). When registry.get(id) is undefined (no context or stale id), a transient
|
|
82
|
+
* empty state is used so one request never overwrites another's context.
|
|
73
83
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* and are searchable by fileUploadId/filename.
|
|
84
|
+
* Entry point: runWithContextAsync(context, fn). Creates registry entry, runs fn with id in ALS,
|
|
85
|
+
* removes entry in finally. Use logInfo, logWarn, logError, logDebug for application logs so they
|
|
86
|
+
* include the same context and are searchable by fileUploadId/filename.
|
|
78
87
|
*
|
|
79
88
|
* Usage:
|
|
80
89
|
* ```typescript
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* processingLogger.addMeasurement(15, 'measurements');
|
|
87
|
-
* processingLogger.logEnd(true);
|
|
90
|
+
* await runWithContextAsync(context, async () => {
|
|
91
|
+
* processingLogger.logStart();
|
|
92
|
+
* processingLogger.logProgress(20, 'get_transformation_rules');
|
|
93
|
+
* processingLogger.logEnd(true);
|
|
94
|
+
* });
|
|
88
95
|
* ```
|
|
89
96
|
*/
|
|
90
97
|
declare class ProcessingLoggerService {
|
|
91
98
|
private static instance;
|
|
92
|
-
private state;
|
|
93
99
|
private logger;
|
|
94
100
|
private constructor();
|
|
95
101
|
static getInstance(): ProcessingLoggerService;
|
|
96
|
-
private initializeState;
|
|
97
102
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
103
|
+
* Resolves state from registry by current request id. When registry.get(id) is undefined
|
|
104
|
+
* (no context or stale id), returns a transient clear state so one request never overwrites another's context.
|
|
100
105
|
*/
|
|
101
106
|
private getMutableState;
|
|
102
|
-
/**
|
|
103
|
-
* Reset all state for a new processing cycle. Call at the start of each Cloud Event / request
|
|
104
|
-
* so that context and metrics from a previous request never leak.
|
|
105
|
-
* Clears both context fields and run state; call setContext(context) after clear() in handlers.
|
|
106
|
-
*/
|
|
107
107
|
clear(): void;
|
|
108
|
-
/**
|
|
109
|
-
* Set context for the current processing cycle. Overwrites all context fields.
|
|
110
|
-
* Call after clear() for each new request.
|
|
111
|
-
*/
|
|
112
108
|
setContext(context: ProcessingContext): void;
|
|
113
|
-
/** Public getter for tests / inspection; returns a copy. Use file_upload_id when filtering logs. */
|
|
114
109
|
getState(): ProcessingState;
|
|
115
|
-
/**
|
|
116
|
-
* Replace the underlying logger (for testing only).
|
|
117
|
-
* Allows tests to inject a mock logger without mocking the module.
|
|
118
|
-
*/
|
|
119
110
|
setLogger(logger: pino.Logger): void;
|
|
120
|
-
/**
|
|
121
|
-
* Context for the current log line (from request-scoped state when inside runWithContext).
|
|
122
|
-
*/
|
|
123
111
|
private getLogContext;
|
|
124
112
|
logInfo(message: string, data?: Record<string, unknown>): void;
|
|
125
113
|
logWarn(message: string, data?: Record<string, unknown>): void;
|
|
@@ -138,14 +126,15 @@ declare class ProcessingLoggerService {
|
|
|
138
126
|
}
|
|
139
127
|
export declare const processingLogger: ProcessingLoggerService;
|
|
140
128
|
/**
|
|
141
|
-
* Run handler logic inside a request-scoped context
|
|
142
|
-
*
|
|
143
|
-
*
|
|
129
|
+
* Run handler logic inside a request-scoped context. State is keyed by request id in the registry;
|
|
130
|
+
* ALS holds only the id. Call at the start of each Cloud Event / request after building the context.
|
|
131
|
+
* @deprecated Prefer runWithContextAsync for async handlers.
|
|
144
132
|
*/
|
|
145
133
|
export declare function runWithContext<T>(context: ProcessingContext, fn: () => T): T;
|
|
146
134
|
/**
|
|
147
|
-
* Async variant: run handler logic inside a request-scoped context.
|
|
148
|
-
*
|
|
135
|
+
* Async variant: run handler logic inside a request-scoped context. Each request gets its own state
|
|
136
|
+
* in the registry keyed by request id; ALS holds only the id. Entry is removed in finally so one
|
|
137
|
+
* request never overwrites another's context.
|
|
149
138
|
*/
|
|
150
139
|
export declare function runWithContextAsync<T>(context: ProcessingContext, fn: () => Promise<T>): Promise<T>;
|
|
151
140
|
export {};
|
|
@@ -4,16 +4,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.processingLogger = void 0;
|
|
7
|
+
exports.getRequestIdFromContext = getRequestIdFromContext;
|
|
7
8
|
exports.runWithContext = runWithContext;
|
|
8
9
|
exports.runWithContextAsync = runWithContextAsync;
|
|
9
10
|
const async_hooks_1 = require("async_hooks");
|
|
11
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
10
12
|
const pinoLogger_1 = __importDefault(require("../util-ts/pinoLogger"));
|
|
11
13
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* keyed by runWithContext(context, fn). Use fileUploadId (or fileName) as the unique identifier.
|
|
14
|
+
* Registry: one ProcessingState per request, keyed by request id.
|
|
15
|
+
* When registry.get(id) is undefined we use a transient empty state so one request never overwrites another's context.
|
|
15
16
|
*/
|
|
16
|
-
const
|
|
17
|
+
const processingStateRegistry = new Map();
|
|
18
|
+
/**
|
|
19
|
+
* AsyncLocalStorage holds only the current request id (not the full state).
|
|
20
|
+
* State is resolved via processingStateRegistry.get(id).
|
|
21
|
+
*/
|
|
22
|
+
const requestIdStorage = new async_hooks_1.AsyncLocalStorage();
|
|
23
|
+
/** One-time dev warning when logging/state update happens with no registry entry (transient state). */
|
|
24
|
+
let hasWarnedNoContext = false;
|
|
25
|
+
function warnOnceNoContext() {
|
|
26
|
+
if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test' || hasWarnedNoContext)
|
|
27
|
+
return;
|
|
28
|
+
hasWarnedNoContext = true;
|
|
29
|
+
(0, pinoLogger_1.default)().warn({ msg: 'ProcessingLogger used outside runWithContextAsync; using transient state. Ensure handlers run inside runWithContextAsync(context, fn).' });
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Returns a stable request id for the given context. Same id must be used for the whole request.
|
|
33
|
+
* Used to key the registry so each request has isolated state.
|
|
34
|
+
*/
|
|
35
|
+
function getRequestIdFromContext(context) {
|
|
36
|
+
return (context.fileUploadId ??
|
|
37
|
+
context.messageId ??
|
|
38
|
+
context.cloudEventId ??
|
|
39
|
+
crypto_1.default.randomUUID());
|
|
40
|
+
}
|
|
17
41
|
function buildInitialStateFromContext(context) {
|
|
18
42
|
return {
|
|
19
43
|
fileName: context.fileName ?? undefined,
|
|
@@ -46,28 +70,64 @@ function buildInitialStateFromContext(context) {
|
|
|
46
70
|
};
|
|
47
71
|
}
|
|
48
72
|
/**
|
|
49
|
-
*
|
|
73
|
+
* Creates a fresh empty state. Used as transient state when registry.get(id) is undefined
|
|
74
|
+
* so one request never overwrites another's context. This state is never stored in the registry.
|
|
75
|
+
*/
|
|
76
|
+
function createEmptyState() {
|
|
77
|
+
return {
|
|
78
|
+
fileName: undefined,
|
|
79
|
+
fileUploadId: undefined,
|
|
80
|
+
partnerId: undefined,
|
|
81
|
+
partnerName: undefined,
|
|
82
|
+
signedUploadId: undefined,
|
|
83
|
+
cloudEventId: undefined,
|
|
84
|
+
messageId: undefined,
|
|
85
|
+
publishTime: undefined,
|
|
86
|
+
fileMimeType: undefined,
|
|
87
|
+
normalizerName: undefined,
|
|
88
|
+
isPreview: false,
|
|
89
|
+
reportPreviewId: undefined,
|
|
90
|
+
startTime: undefined,
|
|
91
|
+
endTime: undefined,
|
|
92
|
+
totalDurationMs: undefined,
|
|
93
|
+
stages: [],
|
|
94
|
+
currentStageStartTime: undefined,
|
|
95
|
+
currentStep: undefined,
|
|
96
|
+
progressPercentage: undefined,
|
|
97
|
+
measurementsCount: undefined,
|
|
98
|
+
unknownMeasurementsCount: undefined,
|
|
99
|
+
unknownUnitsCount: undefined,
|
|
100
|
+
unmappedLabKeysCount: undefined,
|
|
101
|
+
errors: [],
|
|
102
|
+
warnings: [],
|
|
103
|
+
success: undefined,
|
|
104
|
+
metadata: undefined,
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* ProcessingLoggerService - Singleton facade for request-scoped processing state and logging.
|
|
109
|
+
*
|
|
110
|
+
* State is keyed by request id (fileUploadId ?? messageId ?? cloudEventId) in a registry.
|
|
111
|
+
* AsyncLocalStorage holds only the current request id; getMutableState() resolves state via
|
|
112
|
+
* registry.get(id). When registry.get(id) is undefined (no context or stale id), a transient
|
|
113
|
+
* empty state is used so one request never overwrites another's context.
|
|
50
114
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
* and are searchable by fileUploadId/filename.
|
|
115
|
+
* Entry point: runWithContextAsync(context, fn). Creates registry entry, runs fn with id in ALS,
|
|
116
|
+
* removes entry in finally. Use logInfo, logWarn, logError, logDebug for application logs so they
|
|
117
|
+
* include the same context and are searchable by fileUploadId/filename.
|
|
55
118
|
*
|
|
56
119
|
* Usage:
|
|
57
120
|
* ```typescript
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* processingLogger.addMeasurement(15, 'measurements');
|
|
64
|
-
* processingLogger.logEnd(true);
|
|
121
|
+
* await runWithContextAsync(context, async () => {
|
|
122
|
+
* processingLogger.logStart();
|
|
123
|
+
* processingLogger.logProgress(20, 'get_transformation_rules');
|
|
124
|
+
* processingLogger.logEnd(true);
|
|
125
|
+
* });
|
|
65
126
|
* ```
|
|
66
127
|
*/
|
|
67
128
|
class ProcessingLoggerService {
|
|
68
129
|
constructor() {
|
|
69
130
|
this.logger = (0, pinoLogger_1.default)();
|
|
70
|
-
this.state = this.initializeState();
|
|
71
131
|
}
|
|
72
132
|
static getInstance() {
|
|
73
133
|
if (!ProcessingLoggerService.instance) {
|
|
@@ -75,49 +135,23 @@ class ProcessingLoggerService {
|
|
|
75
135
|
}
|
|
76
136
|
return ProcessingLoggerService.instance;
|
|
77
137
|
}
|
|
78
|
-
initializeState() {
|
|
79
|
-
return {
|
|
80
|
-
fileName: undefined,
|
|
81
|
-
fileUploadId: undefined,
|
|
82
|
-
partnerId: undefined,
|
|
83
|
-
partnerName: undefined,
|
|
84
|
-
signedUploadId: undefined,
|
|
85
|
-
cloudEventId: undefined,
|
|
86
|
-
messageId: undefined,
|
|
87
|
-
publishTime: undefined,
|
|
88
|
-
fileMimeType: undefined,
|
|
89
|
-
normalizerName: undefined,
|
|
90
|
-
isPreview: undefined,
|
|
91
|
-
reportPreviewId: undefined,
|
|
92
|
-
startTime: undefined,
|
|
93
|
-
endTime: undefined,
|
|
94
|
-
totalDurationMs: undefined,
|
|
95
|
-
stages: [],
|
|
96
|
-
currentStageStartTime: undefined,
|
|
97
|
-
currentStep: undefined,
|
|
98
|
-
progressPercentage: undefined,
|
|
99
|
-
measurementsCount: undefined,
|
|
100
|
-
unknownMeasurementsCount: undefined,
|
|
101
|
-
unknownUnitsCount: undefined,
|
|
102
|
-
unmappedLabKeysCount: undefined,
|
|
103
|
-
errors: [],
|
|
104
|
-
warnings: [],
|
|
105
|
-
success: undefined,
|
|
106
|
-
metadata: undefined,
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
138
|
/**
|
|
110
|
-
*
|
|
111
|
-
*
|
|
139
|
+
* Resolves state from registry by current request id. When registry.get(id) is undefined
|
|
140
|
+
* (no context or stale id), returns a transient clear state so one request never overwrites another's context.
|
|
112
141
|
*/
|
|
113
142
|
getMutableState() {
|
|
114
|
-
|
|
143
|
+
const id = requestIdStorage.getStore();
|
|
144
|
+
if (id == null) {
|
|
145
|
+
warnOnceNoContext();
|
|
146
|
+
return createEmptyState();
|
|
147
|
+
}
|
|
148
|
+
const state = processingStateRegistry.get(id);
|
|
149
|
+
if (state === undefined) {
|
|
150
|
+
warnOnceNoContext();
|
|
151
|
+
return createEmptyState();
|
|
152
|
+
}
|
|
153
|
+
return state;
|
|
115
154
|
}
|
|
116
|
-
/**
|
|
117
|
-
* Reset all state for a new processing cycle. Call at the start of each Cloud Event / request
|
|
118
|
-
* so that context and metrics from a previous request never leak.
|
|
119
|
-
* Clears both context fields and run state; call setContext(context) after clear() in handlers.
|
|
120
|
-
*/
|
|
121
155
|
clear() {
|
|
122
156
|
const state = this.getMutableState();
|
|
123
157
|
state.fileName = undefined;
|
|
@@ -148,10 +182,6 @@ class ProcessingLoggerService {
|
|
|
148
182
|
state.success = undefined;
|
|
149
183
|
state.metadata = undefined;
|
|
150
184
|
}
|
|
151
|
-
/**
|
|
152
|
-
* Set context for the current processing cycle. Overwrites all context fields.
|
|
153
|
-
* Call after clear() for each new request.
|
|
154
|
-
*/
|
|
155
185
|
setContext(context) {
|
|
156
186
|
const state = this.getMutableState();
|
|
157
187
|
state.fileName = context.fileName ?? undefined;
|
|
@@ -167,20 +197,18 @@ class ProcessingLoggerService {
|
|
|
167
197
|
state.isPreview = context.isPreview ?? false;
|
|
168
198
|
state.reportPreviewId = context.reportPreviewId ?? undefined;
|
|
169
199
|
}
|
|
170
|
-
/** Public getter for tests / inspection; returns a copy. Use file_upload_id when filtering logs. */
|
|
171
200
|
getState() {
|
|
172
|
-
|
|
201
|
+
const src = this.getMutableState();
|
|
202
|
+
return {
|
|
203
|
+
...src,
|
|
204
|
+
stages: src.stages.map((s) => ({ ...s })),
|
|
205
|
+
errors: src.errors.map((e) => ({ ...e, timestamp: e.timestamp })),
|
|
206
|
+
warnings: src.warnings.map((w) => ({ ...w, timestamp: w.timestamp })),
|
|
207
|
+
};
|
|
173
208
|
}
|
|
174
|
-
/**
|
|
175
|
-
* Replace the underlying logger (for testing only).
|
|
176
|
-
* Allows tests to inject a mock logger without mocking the module.
|
|
177
|
-
*/
|
|
178
209
|
setLogger(logger) {
|
|
179
210
|
this.logger = logger;
|
|
180
211
|
}
|
|
181
|
-
/**
|
|
182
|
-
* Context for the current log line (from request-scoped state when inside runWithContext).
|
|
183
|
-
*/
|
|
184
212
|
getLogContext() {
|
|
185
213
|
const src = this.getMutableState();
|
|
186
214
|
return {
|
|
@@ -224,11 +252,7 @@ class ProcessingLoggerService {
|
|
|
224
252
|
this.getMutableState().currentStageStartTime = now;
|
|
225
253
|
this.getMutableState().currentStep = step;
|
|
226
254
|
this.getMutableState().progressPercentage = percentage;
|
|
227
|
-
this.getMutableState().stages.push({
|
|
228
|
-
step,
|
|
229
|
-
percentage,
|
|
230
|
-
startTime: now,
|
|
231
|
-
});
|
|
255
|
+
this.getMutableState().stages.push({ step, percentage, startTime: now });
|
|
232
256
|
}
|
|
233
257
|
endStage() {
|
|
234
258
|
if (!this.getMutableState().currentStageStartTime || !this.getMutableState().currentStep)
|
|
@@ -267,18 +291,7 @@ class ProcessingLoggerService {
|
|
|
267
291
|
report_preview_id: this.getMutableState().reportPreviewId,
|
|
268
292
|
start_time: this.getMutableState().startTime.toISOString(),
|
|
269
293
|
},
|
|
270
|
-
context:
|
|
271
|
-
file_name: this.getMutableState().fileName,
|
|
272
|
-
partner_id: this.getMutableState().partnerId,
|
|
273
|
-
file_upload_id: this.getMutableState().fileUploadId,
|
|
274
|
-
signed_upload_id: this.getMutableState().signedUploadId,
|
|
275
|
-
message_id: this.getMutableState().messageId,
|
|
276
|
-
publish_time: this.getMutableState().publishTime,
|
|
277
|
-
file_mime_type: this.getMutableState().fileMimeType,
|
|
278
|
-
normalizer_name: this.getMutableState().normalizerName,
|
|
279
|
-
is_preview: this.getMutableState().isPreview,
|
|
280
|
-
report_preview_id: this.getMutableState().reportPreviewId,
|
|
281
|
-
},
|
|
294
|
+
context: this.getLogContext(),
|
|
282
295
|
labels: {
|
|
283
296
|
function_name: this.getMutableState().isPreview ? 'AgnosticParserReport' : 'AgnosticParser',
|
|
284
297
|
partner_id: this.getMutableState().partnerId,
|
|
@@ -338,7 +351,12 @@ class ProcessingLoggerService {
|
|
|
338
351
|
}
|
|
339
352
|
}
|
|
340
353
|
addError(error, step) {
|
|
341
|
-
this.getMutableState().errors.push({
|
|
354
|
+
this.getMutableState().errors.push({
|
|
355
|
+
message: error.message,
|
|
356
|
+
step,
|
|
357
|
+
timestamp: new Date(),
|
|
358
|
+
error,
|
|
359
|
+
});
|
|
342
360
|
}
|
|
343
361
|
addWarning(message, step) {
|
|
344
362
|
this.getMutableState().warnings.push({ message, step, timestamp: new Date() });
|
|
@@ -358,7 +376,8 @@ class ProcessingLoggerService {
|
|
|
358
376
|
formatStageDurations() {
|
|
359
377
|
const stageDurations = {};
|
|
360
378
|
this.getMutableState().stages.forEach((stage) => {
|
|
361
|
-
if (stage.durationMs !== undefined &&
|
|
379
|
+
if (stage.durationMs !== undefined &&
|
|
380
|
+
this.getMutableState().totalDurationMs) {
|
|
362
381
|
const percentageOfTotal = (stage.durationMs / this.getMutableState().totalDurationMs) * 100;
|
|
363
382
|
stageDurations[stage.step] = {
|
|
364
383
|
duration_ms: stage.durationMs,
|
|
@@ -375,21 +394,22 @@ class ProcessingLoggerService {
|
|
|
375
394
|
this.endStage();
|
|
376
395
|
this.getMutableState().endTime = new Date();
|
|
377
396
|
if (this.getMutableState().startTime) {
|
|
378
|
-
this.getMutableState().totalDurationMs =
|
|
397
|
+
this.getMutableState().totalDurationMs =
|
|
398
|
+
this.getMutableState().endTime.getTime() -
|
|
399
|
+
this.getMutableState().startTime.getTime();
|
|
379
400
|
}
|
|
380
401
|
this.calculateStageDurations();
|
|
381
402
|
const stageDurations = this.formatStageDurations();
|
|
382
403
|
this.getMutableState().success = success;
|
|
383
|
-
// When we log a failure, always include at least one error so the log explains the reason and
|
|
384
|
-
// jsonPayload.errors exists for GCP metrics (e.g. failures-by-labels). If no error was
|
|
385
|
-
// recorded (e.g. missing addError on a path, or state cleared by another request), add a synthetic one.
|
|
386
404
|
const errorsForPayload = this.getMutableState().errors.length > 0
|
|
387
405
|
? this.getMutableState().errors.map((e) => ({
|
|
388
406
|
message: e.message,
|
|
389
407
|
step: e.step,
|
|
390
408
|
timestamp: e.timestamp.toISOString(),
|
|
391
409
|
...(e.error?.stack && { stack: e.error.stack }),
|
|
392
|
-
...(e.error?.constructor?.name && {
|
|
410
|
+
...(e.error?.constructor?.name && {
|
|
411
|
+
error_type: e.error.constructor.name,
|
|
412
|
+
}),
|
|
393
413
|
}))
|
|
394
414
|
: success
|
|
395
415
|
? undefined
|
|
@@ -407,10 +427,15 @@ class ProcessingLoggerService {
|
|
|
407
427
|
? 'Unknown (no error detail recorded)'
|
|
408
428
|
: undefined;
|
|
409
429
|
const message = this.getMutableState().isPreview
|
|
410
|
-
? success
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
430
|
+
? success
|
|
431
|
+
? 'Report preview processing completed'
|
|
432
|
+
: 'Report preview processing failed'
|
|
433
|
+
: success
|
|
434
|
+
? 'Processing completed'
|
|
435
|
+
: 'Processing failed';
|
|
436
|
+
const logMethod = success
|
|
437
|
+
? this.logger.info.bind(this.logger)
|
|
438
|
+
: this.logger.warn.bind(this.logger);
|
|
414
439
|
logMethod({
|
|
415
440
|
...(failureReason && { failure_reason: failureReason }),
|
|
416
441
|
processing_summary: {
|
|
@@ -429,20 +454,11 @@ class ProcessingLoggerService {
|
|
|
429
454
|
errors_count: errorsForPayload?.length ?? 0,
|
|
430
455
|
warnings_count: this.getMutableState().warnings.length,
|
|
431
456
|
},
|
|
432
|
-
context:
|
|
433
|
-
file_name: this.getMutableState().fileName,
|
|
434
|
-
partner_id: this.getMutableState().partnerId,
|
|
435
|
-
partner_name: this.getMutableState().partnerName,
|
|
436
|
-
file_upload_id: this.getMutableState().fileUploadId,
|
|
437
|
-
signed_upload_id: this.getMutableState().signedUploadId,
|
|
438
|
-
cloud_event_id: this.getMutableState().cloudEventId,
|
|
439
|
-
file_mime_type: this.getMutableState().fileMimeType,
|
|
440
|
-
normalizer_name: this.getMutableState().normalizerName,
|
|
441
|
-
is_preview: this.getMutableState().isPreview,
|
|
442
|
-
report_preview_id: this.getMutableState().reportPreviewId,
|
|
443
|
-
},
|
|
457
|
+
context: this.getLogContext(),
|
|
444
458
|
labels: {
|
|
445
|
-
function_name: this.getMutableState().isPreview
|
|
459
|
+
function_name: this.getMutableState().isPreview
|
|
460
|
+
? 'AgnosticParserReport'
|
|
461
|
+
: 'AgnosticParser',
|
|
446
462
|
partner_id: this.getMutableState().partnerId,
|
|
447
463
|
file_upload_id: this.getMutableState().fileUploadId,
|
|
448
464
|
signed_upload_id: this.getMutableState().signedUploadId,
|
|
@@ -465,20 +481,35 @@ class ProcessingLoggerService {
|
|
|
465
481
|
}
|
|
466
482
|
exports.processingLogger = ProcessingLoggerService.getInstance();
|
|
467
483
|
/**
|
|
468
|
-
* Run handler logic inside a request-scoped context
|
|
469
|
-
*
|
|
470
|
-
*
|
|
484
|
+
* Run handler logic inside a request-scoped context. State is keyed by request id in the registry;
|
|
485
|
+
* ALS holds only the id. Call at the start of each Cloud Event / request after building the context.
|
|
486
|
+
* @deprecated Prefer runWithContextAsync for async handlers.
|
|
471
487
|
*/
|
|
472
488
|
function runWithContext(context, fn) {
|
|
489
|
+
const requestId = getRequestIdFromContext(context);
|
|
473
490
|
const initialState = buildInitialStateFromContext(context);
|
|
474
|
-
|
|
491
|
+
processingStateRegistry.set(requestId, initialState);
|
|
492
|
+
try {
|
|
493
|
+
return requestIdStorage.run(requestId, fn);
|
|
494
|
+
}
|
|
495
|
+
finally {
|
|
496
|
+
processingStateRegistry.delete(requestId);
|
|
497
|
+
}
|
|
475
498
|
}
|
|
476
499
|
/**
|
|
477
|
-
* Async variant: run handler logic inside a request-scoped context.
|
|
478
|
-
*
|
|
500
|
+
* Async variant: run handler logic inside a request-scoped context. Each request gets its own state
|
|
501
|
+
* in the registry keyed by request id; ALS holds only the id. Entry is removed in finally so one
|
|
502
|
+
* request never overwrites another's context.
|
|
479
503
|
*/
|
|
480
504
|
async function runWithContextAsync(context, fn) {
|
|
505
|
+
const requestId = getRequestIdFromContext(context);
|
|
481
506
|
const initialState = buildInitialStateFromContext(context);
|
|
482
|
-
|
|
507
|
+
processingStateRegistry.set(requestId, initialState);
|
|
508
|
+
try {
|
|
509
|
+
return await requestIdStorage.run(requestId, () => fn());
|
|
510
|
+
}
|
|
511
|
+
finally {
|
|
512
|
+
processingStateRegistry.delete(requestId);
|
|
513
|
+
}
|
|
483
514
|
}
|
|
484
515
|
//# sourceMappingURL=processingLogger.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processingLogger.service.js","sourceRoot":"","sources":["../../service/processingLogger.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processingLogger.service.js","sourceRoot":"","sources":["../../service/processingLogger.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openhealth/oht-custom-parser-lib",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.14",
|
|
4
4
|
"description": "Shared nodejs lib with with reusable functions",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
"/dist"
|
|
9
9
|
],
|
|
10
10
|
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
11
12
|
"test": "jest"
|
|
12
13
|
},
|
|
13
14
|
"keywords": [],
|
|
@@ -30,6 +31,7 @@
|
|
|
30
31
|
"@types/jest": "^29.5.14",
|
|
31
32
|
"axios-mock-adapter": "^2.1.0",
|
|
32
33
|
"jest": "^29.7.0",
|
|
33
|
-
"ts-jest": "^29.2.5"
|
|
34
|
+
"ts-jest": "^29.2.5",
|
|
35
|
+
"typescript": "^5.0.0"
|
|
34
36
|
}
|
|
35
37
|
}
|
package/readme.md
CHANGED
|
@@ -38,6 +38,17 @@ const { connectToMongoDB } = require('oht-custom-parser-lib');
|
|
|
38
38
|
- **Production / GCP**: Logs are emitted as JSON (one line per log) for Cloud Logging.
|
|
39
39
|
- **Local / development**: When `NODE_ENV !== 'production'`, logs are pretty-printed in the terminal (colors, timestamps, readable structure). You can override: `LOG_PRETTY=true` to force pretty output, or `LOG_PRETTY=false` to force JSON when not in production.
|
|
40
40
|
|
|
41
|
+
### Processing logger: request-scoped state
|
|
42
|
+
|
|
43
|
+
The processing logger (`processingLogger`, `runWithContextAsync`, `getRequestIdFromContext`) uses a **registry + facade** so each request has isolated state and logs never leak context between concurrent invocations (e.g. in Cloud Functions).
|
|
44
|
+
|
|
45
|
+
- **Registry**: One `ProcessingState` per request, keyed by request id (`fileUploadId ?? messageId ?? cloudEventId ?? generatedId`). The same id is used for the whole request.
|
|
46
|
+
- **AsyncLocalStorage**: Holds only the current request id; state is resolved via `registry.get(id)`.
|
|
47
|
+
- **Entry point**: Wrap your handler in `runWithContextAsync(context, async () => { ... })`. The lib creates a registry entry, runs your callback with the id in AsyncLocalStorage, and removes the entry in a `finally` block.
|
|
48
|
+
- **Clear-state rule**: If there is no request id or the id is not in the registry (e.g. logging outside `runWithContextAsync` or after teardown), the logger uses a **transient empty state** for that call only (never stored). That way one request never overwrites another’s context.
|
|
49
|
+
|
|
50
|
+
Use `processingLogger.logInfo`, `logWarn`, `logError`, `logProgress`, etc. inside the callback so logs include the same context and are searchable by `fileUploadId` / filename.
|
|
51
|
+
|
|
41
52
|
## Development
|
|
42
53
|
|
|
43
54
|
### Patch Versions
|