@openhealth/oht-custom-parser-lib 0.2.42 → 0.2.43
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 +2 -1
- package/dist/index.js.map +1 -1
- package/dist/types/oht.types.d.ts +1 -0
- package/dist/util-ts/dataUtils.d.ts +40 -0
- package/dist/util-ts/dataUtils.js +71 -4
- package/dist/util-ts/dataUtils.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -7,8 +7,9 @@ export { LabToOhtContract, LabToOhtMapper, UnknownMeasurementExtraction, Referen
|
|
|
7
7
|
export { AcfBiomarkerRangeAnnotationCheck, AcfBiomarkerGenericDisclaimerLogic, ManualCheck, BiomarkerCompatibility, ReferenceRangeType, AcfReferenceRange, VisualRange, NameAlias, AlternativeUnit, BiomarkerAcf, Biomarker, PipelineStep, DigitizationStatus, MeasurementValueComparator, BiomarkerValueType, DataImportFileUploadStatus, Sex, Digitization, PatientInfo, UnknownMeasurement, Measurement, DataImportFileUpload, MessagePayload, SignedUpload, ReportStyleConfig, LanguageCode, BiomarkerCustomisation, PartnerCustomPanel, ReportDisplaySettings, ReportCustomisation, OHTPartner, UploadType, } from './types/oht.types';
|
|
8
8
|
export { ErrorMessage } from './types/error.types';
|
|
9
9
|
export { makeApiCallWithRetry, parseErrorObj } from './util-ts/apiUtils';
|
|
10
|
-
export { extractValue, isBiomarkerValueNumerical, isBiomarkerExternalNoVisualRange, processAppendedMappings } from './util-ts/dataUtils';
|
|
10
|
+
export { extractValue, isBiomarkerValueNumerical, isBiomarkerExternalNoVisualRange, processAppendedMappings, generateAnnotationPreview } from './util-ts/dataUtils';
|
|
11
11
|
export { readFileFromBucket, uploadFileBufferToGCS } from './util-ts/googleStorageUtils';
|
|
12
12
|
export { default as pinoLogger } from './util-ts/pinoLogger';
|
|
13
13
|
export { getGreaterThanPatterns, getLowerThanPatterns } from './util-ts/regexUtils';
|
|
14
|
-
export { getMappedBiomarkers
|
|
14
|
+
export { getMappedBiomarkers } from './util-ts/dataUtils';
|
|
15
|
+
export { AnnotationPreviewResult, AnnotationConfig, ExtractionPath } from './util-ts/dataUtils';
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getMappedBiomarkers = exports.getLowerThanPatterns = exports.getGreaterThanPatterns = exports.pinoLogger = exports.uploadFileBufferToGCS = exports.readFileFromBucket = exports.processAppendedMappings = exports.isBiomarkerExternalNoVisualRange = exports.isBiomarkerValueNumerical = exports.extractValue = exports.parseErrorObj = exports.makeApiCallWithRetry = 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.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.postFileUploadSetStatus = exports.queryFileUploadsWithFilters = exports.handleRejection = exports.isPatientAgeValid = exports.parseGender = exports.parseExternalPatientId = exports.postDataImportFileUploadToCore = void 0;
|
|
6
|
+
exports.getMappedBiomarkers = exports.getLowerThanPatterns = exports.getGreaterThanPatterns = exports.pinoLogger = exports.uploadFileBufferToGCS = exports.readFileFromBucket = exports.generateAnnotationPreview = exports.processAppendedMappings = exports.isBiomarkerExternalNoVisualRange = exports.isBiomarkerValueNumerical = exports.extractValue = exports.parseErrorObj = exports.makeApiCallWithRetry = 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.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.postFileUploadSetStatus = exports.queryFileUploadsWithFilters = exports.handleRejection = exports.isPatientAgeValid = exports.parseGender = exports.parseExternalPatientId = exports.postDataImportFileUploadToCore = void 0;
|
|
7
7
|
// ### SERVICES ###
|
|
8
8
|
var reportCreator_service_1 = require("./service/reportCreator.service");
|
|
9
9
|
Object.defineProperty(exports, "postDataImportFileUploadToCore", { enumerable: true, get: function () { return reportCreator_service_1.postDataImportFileUploadToCore; } });
|
|
@@ -56,6 +56,7 @@ Object.defineProperty(exports, "extractValue", { enumerable: true, get: function
|
|
|
56
56
|
Object.defineProperty(exports, "isBiomarkerValueNumerical", { enumerable: true, get: function () { return dataUtils_1.isBiomarkerValueNumerical; } });
|
|
57
57
|
Object.defineProperty(exports, "isBiomarkerExternalNoVisualRange", { enumerable: true, get: function () { return dataUtils_1.isBiomarkerExternalNoVisualRange; } });
|
|
58
58
|
Object.defineProperty(exports, "processAppendedMappings", { enumerable: true, get: function () { return dataUtils_1.processAppendedMappings; } });
|
|
59
|
+
Object.defineProperty(exports, "generateAnnotationPreview", { enumerable: true, get: function () { return dataUtils_1.generateAnnotationPreview; } });
|
|
59
60
|
var googleStorageUtils_1 = require("./util-ts/googleStorageUtils");
|
|
60
61
|
Object.defineProperty(exports, "readFileFromBucket", { enumerable: true, get: function () { return googleStorageUtils_1.readFileFromBucket; } });
|
|
61
62
|
Object.defineProperty(exports, "uploadFileBufferToGCS", { enumerable: true, get: function () { return googleStorageUtils_1.uploadFileBufferToGCS; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;AAAA,mBAAmB;AACnB,yEAEyC;AADvC,uIAAA,8BAA8B,OAAA;AAEhC,mFAO8C;AAN5C,oIAAA,sBAAsB,OAAA;AACtB,yHAAA,WAAW,OAAA;AACX,+HAAA,iBAAiB,OAAA;AACjB,6HAAA,eAAe,OAAA;AACf,yIAAA,2BAA2B,OAAA;AAC3B,qIAAA,uBAAuB,OAAA;AAEzB,+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;AAElC,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;AAGpB,gBAAgB;AAChB,mEAWqC;AAFnC,mHAAA,YAAY,OAAA;AAGd,+CAiC2B;AAhCzB,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;AAeH,uGAAA,UAAU,OAAA;AAIZ,kBAAkB;AAClB,+CAAuE;AAA/D,gHAAA,oBAAoB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAC3C,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;AAAA,mBAAmB;AACnB,yEAEyC;AADvC,uIAAA,8BAA8B,OAAA;AAEhC,mFAO8C;AAN5C,oIAAA,sBAAsB,OAAA;AACtB,yHAAA,WAAW,OAAA;AACX,+HAAA,iBAAiB,OAAA;AACjB,6HAAA,eAAe,OAAA;AACf,yIAAA,2BAA2B,OAAA;AAC3B,qIAAA,uBAAuB,OAAA;AAEzB,+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;AAElC,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;AAGpB,gBAAgB;AAChB,mEAWqC;AAFnC,mHAAA,YAAY,OAAA;AAGd,+CAiC2B;AAhCzB,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;AAeH,uGAAA,UAAU,OAAA;AAIZ,kBAAkB;AAClB,+CAAuE;AAA/D,gHAAA,oBAAoB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAC3C,iDAAkK;AAA1J,yGAAA,YAAY,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AAAE,6HAAA,gCAAgC,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AACrI,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,iDAAwD;AAAhD,gHAAA,mBAAmB,OAAA"}
|
|
@@ -408,6 +408,7 @@ export interface AnnotationConfig {
|
|
|
408
408
|
maxLength?: number;
|
|
409
409
|
fallbackValue?: string;
|
|
410
410
|
separator?: string;
|
|
411
|
+
concatenationMode?: 'space' | 'newline' | 'comma';
|
|
411
412
|
}
|
|
412
413
|
/** Main backend biomarker mapping interface */
|
|
413
414
|
export interface BackendBiomarkerMapping {
|
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
import { UnknownMeasurementsBulk, AnnotationLabKey } from '../types/oht.types';
|
|
2
|
+
export interface AnnotationPreviewResult {
|
|
3
|
+
success: boolean;
|
|
4
|
+
text: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
extractedValues: Array<{
|
|
7
|
+
labKey: string;
|
|
8
|
+
path: string;
|
|
9
|
+
value: string;
|
|
10
|
+
formatted: string;
|
|
11
|
+
required: boolean;
|
|
12
|
+
used: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export interface AnnotationConfig {
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
labKeys?: AnnotationLabKey[];
|
|
18
|
+
concatenationMode?: 'space' | 'newline' | 'comma';
|
|
19
|
+
separator?: string;
|
|
20
|
+
maxLength?: number;
|
|
21
|
+
fallbackValue?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface ExtractionPath {
|
|
24
|
+
path: string;
|
|
25
|
+
required: boolean;
|
|
26
|
+
format?: string;
|
|
27
|
+
defaultValue?: string;
|
|
28
|
+
}
|
|
2
29
|
export declare function isBiomarkerValueNumerical(biomarker: any): boolean;
|
|
3
30
|
export declare function isBiomarkerExternalNoVisualRange(biomarker: any): boolean;
|
|
4
31
|
export declare const extractValue: (obj: any, position?: string) => any;
|
|
@@ -17,6 +44,7 @@ export declare function processAppendedMappings(exams: any[], labKeys: Annotatio
|
|
|
17
44
|
maxLength?: number;
|
|
18
45
|
fallbackValue?: string;
|
|
19
46
|
separator?: string;
|
|
47
|
+
concatenationMode?: 'space' | 'newline' | 'comma';
|
|
20
48
|
}): {
|
|
21
49
|
success: boolean;
|
|
22
50
|
text: string;
|
|
@@ -30,3 +58,15 @@ export declare function processAppendedMappings(exams: any[], labKeys: Annotatio
|
|
|
30
58
|
used: boolean;
|
|
31
59
|
}>;
|
|
32
60
|
};
|
|
61
|
+
/**
|
|
62
|
+
* Generate annotation preview from single exam data (ohapi compatibility)
|
|
63
|
+
* Wrapper function that converts single exam to array format for processAppendedMappings
|
|
64
|
+
* @param examData - Single exam data (OHTExam or JSON blob)
|
|
65
|
+
* @param annotationConfig - Annotation configuration
|
|
66
|
+
* @param targetLabKey - Target lab key for extraction
|
|
67
|
+
* @param extractionPaths - Array of extraction paths
|
|
68
|
+
* @param prefix - Optional prefix for the result
|
|
69
|
+
* @param suffix - Optional suffix for the result
|
|
70
|
+
* @returns AnnotationPreviewResult with extracted text and values
|
|
71
|
+
*/
|
|
72
|
+
export declare function generateAnnotationPreview(examData: any, annotationConfig: AnnotationConfig, targetLabKey: string, extractionPaths: ExtractionPath[], prefix?: string, suffix?: string): AnnotationPreviewResult;
|
|
@@ -7,6 +7,7 @@ exports.updatePartnerCustomParserUnmappedLabKeys = exports.getMappedBiomarkers =
|
|
|
7
7
|
exports.isBiomarkerValueNumerical = isBiomarkerValueNumerical;
|
|
8
8
|
exports.isBiomarkerExternalNoVisualRange = isBiomarkerExternalNoVisualRange;
|
|
9
9
|
exports.processAppendedMappings = processAppendedMappings;
|
|
10
|
+
exports.generateAnnotationPreview = generateAnnotationPreview;
|
|
10
11
|
const apiUtils_1 = require("./apiUtils");
|
|
11
12
|
const pinoLogger_1 = __importDefault(require("./pinoLogger"));
|
|
12
13
|
const logger = (0, pinoLogger_1.default)();
|
|
@@ -109,10 +110,15 @@ function processAppendedMappings(exams, labKeys, filename, annotationConfig) {
|
|
|
109
110
|
required: path.required,
|
|
110
111
|
used: !!formatted
|
|
111
112
|
});
|
|
112
|
-
// Handle required paths - if required and no value,
|
|
113
|
+
// Handle required paths - if required and no value, fail the entire operation
|
|
113
114
|
if (path.required && !rawValue && !path.defaultValue) {
|
|
114
115
|
logger.warn(`Required extraction path ${path.path} not found for labKey ${additionalLabKey.labKey}, filename: ${filename}`);
|
|
115
|
-
|
|
116
|
+
return {
|
|
117
|
+
success: false,
|
|
118
|
+
text: '',
|
|
119
|
+
error: `Required path '${path.path}' is missing for labKey '${additionalLabKey.labKey}'`,
|
|
120
|
+
extractedValues: allExtractedValues
|
|
121
|
+
};
|
|
116
122
|
}
|
|
117
123
|
else if (formatted) {
|
|
118
124
|
// Only add non-empty formatted values
|
|
@@ -127,8 +133,26 @@ function processAppendedMappings(exams, labKeys, filename, annotationConfig) {
|
|
|
127
133
|
const finalResult = `${additionalLabKey.prefix || ''}${combinedValue}${additionalLabKey.suffix || ''}`;
|
|
128
134
|
labKeyResults.push(finalResult);
|
|
129
135
|
}
|
|
130
|
-
// Join results based on separator or default to space
|
|
131
|
-
let finalText =
|
|
136
|
+
// Join results based on concatenationMode, separator, or default to space
|
|
137
|
+
let finalText = '';
|
|
138
|
+
if (annotationConfig?.concatenationMode) {
|
|
139
|
+
switch (annotationConfig.concatenationMode) {
|
|
140
|
+
case 'space':
|
|
141
|
+
finalText = labKeyResults.join(' ');
|
|
142
|
+
break;
|
|
143
|
+
case 'newline':
|
|
144
|
+
finalText = labKeyResults.join('\n');
|
|
145
|
+
break;
|
|
146
|
+
case 'comma':
|
|
147
|
+
finalText = labKeyResults.join(', ');
|
|
148
|
+
break;
|
|
149
|
+
default:
|
|
150
|
+
finalText = labKeyResults.join(annotationConfig?.separator || ' ');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
finalText = labKeyResults.join(annotationConfig?.separator || ' ');
|
|
155
|
+
}
|
|
132
156
|
// Apply max length if specified
|
|
133
157
|
if (annotationConfig?.maxLength && finalText.length > annotationConfig.maxLength) {
|
|
134
158
|
finalText = finalText.substring(0, annotationConfig.maxLength);
|
|
@@ -284,4 +308,47 @@ function findChildObjectWithValue(parentObj, targetValue) {
|
|
|
284
308
|
}
|
|
285
309
|
return null;
|
|
286
310
|
}
|
|
311
|
+
/**
|
|
312
|
+
* Generate annotation preview from single exam data (ohapi compatibility)
|
|
313
|
+
* Wrapper function that converts single exam to array format for processAppendedMappings
|
|
314
|
+
* @param examData - Single exam data (OHTExam or JSON blob)
|
|
315
|
+
* @param annotationConfig - Annotation configuration
|
|
316
|
+
* @param targetLabKey - Target lab key for extraction
|
|
317
|
+
* @param extractionPaths - Array of extraction paths
|
|
318
|
+
* @param prefix - Optional prefix for the result
|
|
319
|
+
* @param suffix - Optional suffix for the result
|
|
320
|
+
* @returns AnnotationPreviewResult with extracted text and values
|
|
321
|
+
*/
|
|
322
|
+
function generateAnnotationPreview(examData, annotationConfig, targetLabKey, extractionPaths, prefix, suffix) {
|
|
323
|
+
if (!examData) {
|
|
324
|
+
return {
|
|
325
|
+
success: false,
|
|
326
|
+
text: '',
|
|
327
|
+
error: 'No exam data provided',
|
|
328
|
+
extractedValues: []
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
// Convert single exam to array format expected by processAppendedMappings
|
|
332
|
+
const exams = [{
|
|
333
|
+
ohtExam: examData,
|
|
334
|
+
labKey: targetLabKey
|
|
335
|
+
}];
|
|
336
|
+
// Create AnnotationLabKey from provided parameters
|
|
337
|
+
const labKey = {
|
|
338
|
+
labKey: targetLabKey,
|
|
339
|
+
extractionPaths: extractionPaths,
|
|
340
|
+
required: false, // Not used in this context
|
|
341
|
+
prefix: prefix,
|
|
342
|
+
suffix: suffix
|
|
343
|
+
};
|
|
344
|
+
// Call processAppendedMappings with single exam
|
|
345
|
+
const result = processAppendedMappings(exams, [labKey], 'webapp-preview', // filename for logging
|
|
346
|
+
{
|
|
347
|
+
maxLength: annotationConfig.maxLength,
|
|
348
|
+
fallbackValue: annotationConfig.fallbackValue,
|
|
349
|
+
separator: annotationConfig.separator,
|
|
350
|
+
concatenationMode: annotationConfig.concatenationMode
|
|
351
|
+
});
|
|
352
|
+
return result;
|
|
353
|
+
}
|
|
287
354
|
//# sourceMappingURL=dataUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataUtils.js","sourceRoot":"","sources":["../../util-ts/dataUtils.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"dataUtils.js","sourceRoot":"","sources":["../../util-ts/dataUtils.ts"],"names":[],"mappings":"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"}
|