@openhealth/oht-custom-parser-lib 0.4.2 → 0.4.3

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.
@@ -0,0 +1,59 @@
1
+ import { LabToOhtContract, LabToOhtMapper, RangeExtractionResponse, SynonymUnit, UnknownUnits, TransformationRulesChains } from "../types/custom-parser.types";
2
+ import { Biomarker, BiomarkerValueType, Measurement, MeasurementValueComparator, PatientInfo, UnknownMeasurement, Exam } from "../types/oht.types";
3
+ /**
4
+ * Extracts unit from rawData (OhtExam object)
5
+ * @param rawData - OhtExam object (not a JSON string)
6
+ * @param ohtBiomarker - Biomarker information
7
+ * @param synonymUnits - Synonym units for unit resolution
8
+ * @param partnerId - Partner ID for synonym resolution
9
+ */
10
+ declare function agnosticExtractUnit(rawData: any, ohtBiomarker: Biomarker, synonymUnits?: SynonymUnit[] | null, partnerId?: string | null | undefined): {
11
+ unit: string;
12
+ isUnitParsedCorrectly: boolean;
13
+ originalUnit: string;
14
+ isArbitraryUnit: boolean;
15
+ unknownUnit: string;
16
+ };
17
+ /**
18
+ * Extracts reference annotation from rawExam (OhtExam object)
19
+ * @param labToOhtMapper - Lab to OHT mapper configuration
20
+ * @param rawExam - OhtExam object (not a JSON string)
21
+ * @param patientInfo - Patient information
22
+ * @param documentDate - Document date
23
+ * @param exams - Array of exams for appended mappings
24
+ */
25
+ declare function agnosticExtractReferenceAnnotation(labToOhtMapper: LabToOhtMapper, rawExam: any, patientInfo: PatientInfo, documentDate?: Date, exams?: Exam[]): string;
26
+ /**
27
+ * Extracts reference ranges from rawData (OhtExam object)
28
+ * Always uses parseRange function from extractionUtils for range extraction
29
+ */
30
+ declare function agnosticExtractReferenceRanges(labToOhtMapper: LabToOhtMapper, rawData: any, patientInfo: PatientInfo, documentDate?: Date): RangeExtractionResponse;
31
+ declare function agnosticExtractValueFromGreaterLowerThan(value: string): {
32
+ extractedValue: number | null;
33
+ extractedValueComparator: MeasurementValueComparator | null;
34
+ valueParsedCorrectly: boolean;
35
+ };
36
+ /**
37
+ * Parses exam value from rawExamObj (OhtExam object)
38
+ * Now uses value directly from ohtExam
39
+ */
40
+ declare function agnosticParseExamValue(rawExamObj: any, ohtBiomarker: Biomarker): {
41
+ valueType: BiomarkerValueType;
42
+ alphanumericalValue: string | null;
43
+ numberValue: number | null;
44
+ valueComparator: MeasurementValueComparator;
45
+ isValueParsedCorrectly: boolean;
46
+ };
47
+ declare function agnosticCheckValueForPlausibleValues(labToOhtMapper: LabToOhtMapper, ohtBiomarker: Biomarker, unit: string, value: number, isUnitParsedCorrectly: boolean): boolean;
48
+ type ApplyTransformationRulesResult = {
49
+ transformedExams: Exam[];
50
+ applicationErrorMessages: string[];
51
+ };
52
+ declare function ohtAgnosticMeasurementsExtractor(labToOhtContract: LabToOhtContract, exams: Exam[], transformationRules: TransformationRulesChains, ohtCoreApiKey: string, partnerId?: string | null | undefined): Promise<{
53
+ measurements: Measurement[];
54
+ unknownMeasurements: UnknownMeasurement[];
55
+ unknownUnits: UnknownUnits[];
56
+ isReportCorrectlyParsed: boolean;
57
+ transformationRulesErrors: string[];
58
+ }>;
59
+ export { ApplyTransformationRulesResult, ohtAgnosticMeasurementsExtractor, agnosticCheckValueForPlausibleValues, agnosticExtractReferenceRanges, agnosticExtractReferenceAnnotation, agnosticParseExamValue, agnosticExtractUnit, agnosticExtractValueFromGreaterLowerThan };
@@ -0,0 +1,603 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ohtAgnosticMeasurementsExtractor = ohtAgnosticMeasurementsExtractor;
7
+ exports.agnosticCheckValueForPlausibleValues = agnosticCheckValueForPlausibleValues;
8
+ exports.agnosticExtractReferenceRanges = agnosticExtractReferenceRanges;
9
+ exports.agnosticExtractReferenceAnnotation = agnosticExtractReferenceAnnotation;
10
+ exports.agnosticParseExamValue = agnosticParseExamValue;
11
+ exports.agnosticExtractUnit = agnosticExtractUnit;
12
+ exports.agnosticExtractValueFromGreaterLowerThan = agnosticExtractValueFromGreaterLowerThan;
13
+ const dataUtils_1 = require("../util-ts/dataUtils");
14
+ const regexUtils_1 = require("../util-ts/regexUtils");
15
+ const extractionUtils_1 = require("../util-ts/extractionUtils");
16
+ const pinoLogger_1 = __importDefault(require("../util-ts/pinoLogger"));
17
+ const apiUtils_1 = require("../util-ts/apiUtils");
18
+ const oht_types_1 = require("../types/oht.types");
19
+ const transformationRules_service_1 = require("./transformationRules.service");
20
+ const auxiliaryFunctions_service_1 = require("./auxiliaryFunctions.service");
21
+ const logger = (0, pinoLogger_1.default)();
22
+ const OHT_CORE_URL = process.env.OHT_CORE_URL;
23
+ let filename = '';
24
+ /**
25
+ * Extracts unit from rawData (OhtExam object)
26
+ * @param rawData - OhtExam object (not a JSON string)
27
+ * @param ohtBiomarker - Biomarker information
28
+ * @param synonymUnits - Synonym units for unit resolution
29
+ * @param partnerId - Partner ID for synonym resolution
30
+ */
31
+ function agnosticExtractUnit(rawData, ohtBiomarker, synonymUnits = null, partnerId = null) {
32
+ if (!(0, dataUtils_1.isBiomarkerValueNumerical)(ohtBiomarker)) {
33
+ return { unit: "None", isUnitParsedCorrectly: true, originalUnit: "", isArbitraryUnit: false, unknownUnit: '' };
34
+ }
35
+ const isArbitraryUnit = ohtBiomarker.acf.standardUnitArbUnitLogic === 'default';
36
+ let originalUnit = '';
37
+ // Use unit directly from ohtExam
38
+ const unit = rawData?.unit ?? '';
39
+ let unitLowerCase = unit?.toLowerCase();
40
+ unitLowerCase = unitLowerCase?.replaceAll(/ /g, '') ?? '';
41
+ const standardUnit = ohtBiomarker.acf.standardUnit;
42
+ const allBmOhtUnits = [
43
+ standardUnit?.toLowerCase(),
44
+ ...ohtBiomarker.acf?.alternativeUnits
45
+ ?.map((bmAlternative) => bmAlternative.name.toLowerCase()) ?? []
46
+ ];
47
+ // If the biomarker uses an arbitrary unit, return standard unit and set the original unit as the unit extracted from the data
48
+ if (isArbitraryUnit) {
49
+ originalUnit = unit;
50
+ return { unit: standardUnit, isUnitParsedCorrectly: true, originalUnit: originalUnit, isArbitraryUnit: isArbitraryUnit, unknownUnit: '' };
51
+ }
52
+ // First test if the biomarker has the unit explicit in the 'unity' field
53
+ const allUnitContainsJsonUnit = allBmOhtUnits.includes(unitLowerCase);
54
+ if (unitLowerCase?.length > 0 && allUnitContainsJsonUnit) {
55
+ // Find the original case version from standardUnit or alternativeUnits
56
+ let matchedUnit = standardUnit?.toLowerCase().replaceAll(/ /g, '') === unitLowerCase
57
+ ? standardUnit?.replaceAll(/ /g, '')
58
+ : ohtBiomarker.acf?.alternativeUnits?.find((bmAlternative) => bmAlternative.name.toLowerCase().replaceAll(/ /g, '') === unitLowerCase)?.name?.replaceAll(/ /g, '');
59
+ // Fallback to original unit if no match found (shouldn't happen, but safety check)
60
+ matchedUnit = matchedUnit || unit?.replaceAll(/ /g, '');
61
+ return {
62
+ unit: matchedUnit,
63
+ isUnitParsedCorrectly: true,
64
+ originalUnit: originalUnit,
65
+ isArbitraryUnit: isArbitraryUnit,
66
+ unknownUnit: ''
67
+ };
68
+ }
69
+ // Check if there are any Synonym configured
70
+ if (unitLowerCase?.length > 0) {
71
+ let resolvedUnit = null;
72
+ if (synonymUnits && synonymUnits.length > 0) {
73
+ const resolved = (0, dataUtils_1.resolveUnitFromSynonyms)(unitLowerCase, ohtBiomarker.id, partnerId, synonymUnits);
74
+ if (resolved.found && resolved.targetUnit) {
75
+ resolvedUnit = resolved.targetUnit;
76
+ }
77
+ }
78
+ if (resolvedUnit) {
79
+ const allUnitContainsJsonUnitSynonyms = allBmOhtUnits.includes(resolvedUnit.toLowerCase());
80
+ if (allUnitContainsJsonUnitSynonyms) {
81
+ return { unit: resolvedUnit, isUnitParsedCorrectly: true, originalUnit: originalUnit, isArbitraryUnit: isArbitraryUnit, unknownUnit: '' };
82
+ }
83
+ }
84
+ }
85
+ // if the unit didnt match any of the cases, add the unit to an unknownUnit list
86
+ return { unit: '', isUnitParsedCorrectly: false, originalUnit: '', isArbitraryUnit: false, unknownUnit: unit };
87
+ }
88
+ /**
89
+ * Extracts reference annotation from rawExam (OhtExam object)
90
+ * @param labToOhtMapper - Lab to OHT mapper configuration
91
+ * @param rawExam - OhtExam object (not a JSON string)
92
+ * @param patientInfo - Patient information
93
+ * @param documentDate - Document date
94
+ * @param exams - Array of exams for appended mappings
95
+ */
96
+ function agnosticExtractReferenceAnnotation(labToOhtMapper, rawExam, patientInfo, documentDate, exams) {
97
+ let annotation = '';
98
+ // if it is an appended mapping, add the extracted values to annotation
99
+ if (labToOhtMapper?.annotationConfig?.enabled) {
100
+ const appendedResult = (0, dataUtils_1.processAppendedMappings)(exams, labToOhtMapper.annotationConfig.labKeys, filename, {
101
+ maxLength: labToOhtMapper.annotationConfig.maxLength,
102
+ fallbackValue: labToOhtMapper.annotationConfig.fallbackValue,
103
+ separator: labToOhtMapper.annotationConfig.separator
104
+ });
105
+ if (appendedResult.text?.length) {
106
+ annotation += appendedResult.text;
107
+ }
108
+ }
109
+ // Use annotation directly from ohtExam
110
+ const extractedReference = rawExam?.annotation ?? '';
111
+ if (extractedReference?.length) {
112
+ annotation += annotation ? `\n${extractedReference}` : extractedReference;
113
+ }
114
+ return annotation || undefined;
115
+ }
116
+ /**
117
+ * Extracts reference ranges from rawData (OhtExam object)
118
+ * Always uses parseRange function from extractionUtils for range extraction
119
+ */
120
+ function agnosticExtractReferenceRanges(labToOhtMapper, rawData, patientInfo, documentDate) {
121
+ const nullRangeNotParsedCorrectly = { from: null, to: null, isRangeParsedCorrectly: false };
122
+ const nullRangeParsedCorrectly = { from: null, to: null, isRangeParsedCorrectly: true };
123
+ // if internalRange return null, but is parsed correctly
124
+ if (labToOhtMapper?.rangeExtraction?.useInternalRange) {
125
+ return nullRangeParsedCorrectly;
126
+ }
127
+ // Always use parseRange function from extractionUtils
128
+ const rangeExtractionResult = (0, extractionUtils_1.parseRange)(rawData, labToOhtMapper, patientInfo);
129
+ if (rangeExtractionResult.isRangeParsedCorrectly) {
130
+ return rangeExtractionResult;
131
+ }
132
+ return nullRangeNotParsedCorrectly;
133
+ }
134
+ function agnosticExtractValueFromGreaterLowerThan(value) {
135
+ // Checks first if any greater than pattern is present
136
+ const greaterThanPatterns = (0, regexUtils_1.getGreaterThanPatterns)();
137
+ const lowerThanPatterns = (0, regexUtils_1.getLowerThanPatterns)();
138
+ value = value.toLowerCase();
139
+ for (const pattern of greaterThanPatterns) {
140
+ const match = pattern.exec(value);
141
+ if (match) {
142
+ const value = parseFloat(match?.[1].replaceAll(',', '.'));
143
+ const valueComparator = oht_types_1.MeasurementValueComparator.GREATER_THAN;
144
+ return {
145
+ extractedValue: value,
146
+ extractedValueComparator: valueComparator,
147
+ valueParsedCorrectly: !Number.isNaN(value)
148
+ };
149
+ }
150
+ }
151
+ // Checks if any lower than pattern is present
152
+ for (const pattern of lowerThanPatterns) {
153
+ const match = pattern.exec(value);
154
+ if (match) {
155
+ const value = parseFloat(match?.[1].replaceAll(',', '.'));
156
+ const valueComparator = oht_types_1.MeasurementValueComparator.LESS_THAN;
157
+ return {
158
+ extractedValue: value,
159
+ extractedValueComparator: valueComparator,
160
+ valueParsedCorrectly: !Number.isNaN(value)
161
+ };
162
+ }
163
+ }
164
+ // If no pattern is found, return the value as is and the comparator as EQUAL and isValueParsedCorrectly as false
165
+ return { extractedValue: null, extractedValueComparator: null, valueParsedCorrectly: false };
166
+ }
167
+ /**
168
+ * Parses exam value from rawExamObj (OhtExam object)
169
+ * Now uses value directly from ohtExam
170
+ */
171
+ function agnosticParseExamValue(rawExamObj, ohtBiomarker) {
172
+ // Use value directly from ohtExam
173
+ let value = rawExamObj?.value ?? '';
174
+ // Normalize to string for parseFloat
175
+ if (value != null) {
176
+ value = String(value);
177
+ }
178
+ else {
179
+ value = '';
180
+ }
181
+ // If is parse float nan, the value is alphanumerical
182
+ const valueType = (0, dataUtils_1.isBiomarkerValueNumerical)(ohtBiomarker)
183
+ ? oht_types_1.BiomarkerValueType.NUMERICAL
184
+ : oht_types_1.BiomarkerValueType.ALPHANUMERICAL;
185
+ let alphanumericalValue = Number.isNaN(parseFloat(value))
186
+ ? value
187
+ : null;
188
+ if (valueType === oht_types_1.BiomarkerValueType.ALPHANUMERICAL
189
+ && !Number.isNaN(parseFloat(value))) {
190
+ // convert numberValue to string
191
+ alphanumericalValue = value.toString();
192
+ }
193
+ if (valueType === oht_types_1.BiomarkerValueType.NUMERICAL
194
+ && Number.isNaN(parseFloat(value))) {
195
+ // convert numberValue to string
196
+ const { extractedValue, extractedValueComparator, valueParsedCorrectly } = agnosticExtractValueFromGreaterLowerThan(value);
197
+ return {
198
+ valueType,
199
+ alphanumericalValue,
200
+ numberValue: extractedValue,
201
+ valueComparator: extractedValueComparator ?? oht_types_1.MeasurementValueComparator.EQUAL,
202
+ isValueParsedCorrectly: valueParsedCorrectly
203
+ };
204
+ }
205
+ if (valueType === 'NUMERICAL') {
206
+ return {
207
+ valueType,
208
+ alphanumericalValue,
209
+ numberValue: parseFloat(value),
210
+ valueComparator: oht_types_1.MeasurementValueComparator.EQUAL,
211
+ isValueParsedCorrectly: !Number.isNaN(parseFloat(value))
212
+ };
213
+ }
214
+ if (valueType === 'ALPHANUMERICAL') {
215
+ return {
216
+ valueType,
217
+ alphanumericalValue,
218
+ numberValue: parseFloat(value),
219
+ valueComparator: oht_types_1.MeasurementValueComparator.EQUAL,
220
+ isValueParsedCorrectly: Boolean(alphanumericalValue)
221
+ };
222
+ }
223
+ return {
224
+ valueType,
225
+ alphanumericalValue,
226
+ numberValue: null,
227
+ valueComparator: oht_types_1.MeasurementValueComparator.EQUAL,
228
+ isValueParsedCorrectly: false
229
+ };
230
+ }
231
+ function agnosticCheckValueForPlausibleValues(labToOhtMapper, ohtBiomarker, unit, value, isUnitParsedCorrectly) {
232
+ if (!(0, dataUtils_1.isBiomarkerValueNumerical)(ohtBiomarker) && isUnitParsedCorrectly) {
233
+ return true;
234
+ }
235
+ const standardUnit = ohtBiomarker.acf.standardUnit;
236
+ const plausibleLowerValue = ohtBiomarker.acf.plausibilityRangeCheck;
237
+ const plausibleUpperValue = ohtBiomarker.acf.plausibilityRangeCheckHigh;
238
+ const biomarkerStdValueDecimals = ohtBiomarker.acf?.displayDecimals ?? 2;
239
+ if (unit !== standardUnit) {
240
+ const alternativeUnit = (Array.isArray(ohtBiomarker.acf?.alternativeUnits)
241
+ ? ohtBiomarker.acf?.alternativeUnits
242
+ : [])?.find((altUnit) => altUnit.name === unit);
243
+ if (alternativeUnit) {
244
+ const conversionFactor = alternativeUnit.conversionFactor;
245
+ value = +(value * conversionFactor).toFixed(biomarkerStdValueDecimals);
246
+ }
247
+ }
248
+ const isPlausibleValue = value >= plausibleLowerValue && value <= plausibleUpperValue;
249
+ // Log if the value is not plausible
250
+ if (!isPlausibleValue) {
251
+ logger.warn({ labToOhtMapper, value, standardUnit, plausibleLowerValue, plausibleUpperValue, filename }, `Value "${value} ${standardUnit}" not plausible "${plausibleLowerValue} to ${plausibleUpperValue}" for "${labToOhtMapper.ohtBmId}" | "${labToOhtMapper.ohtExam.labKey}", filename: ${filename}`);
252
+ }
253
+ return isPlausibleValue;
254
+ }
255
+ /**
256
+ * Apply transformation rules to exams
257
+ * This function applies transformation rules chain to each exam, passing all exams as context
258
+ *
259
+ * @param exams - Array of original exam objects
260
+ * @param transformationRules - Mapping of labKey to transformation rule chains
261
+ * @param labToOhtContract - The contract containing patient info and other context
262
+ * @returns Promise<Exam[]> - Array of transformed exams
263
+ */
264
+ async function applyTransformationRulesToExams(exams, transformationRules, patientInfo, documentDate) {
265
+ if (transformationRules.size === 0) {
266
+ return {
267
+ transformedExams: exams,
268
+ applicationErrorMessages: []
269
+ };
270
+ }
271
+ const transformedExams = [];
272
+ // Prepare context for transformation rules
273
+ const reportContext = {
274
+ patient: {
275
+ sex: patientInfo.sex,
276
+ birthdate: patientInfo.birthdate,
277
+ age: (0, auxiliaryFunctions_service_1.getPatientAge)(documentDate, patientInfo.birthdate),
278
+ }
279
+ };
280
+ // Prepare the OHT exam data
281
+ const ohtReport = {
282
+ exams: exams.map(e => e.ohtExam),
283
+ };
284
+ logger.info({ examsCount: exams.length, chainsCount: transformationRules.size, filename }, 'Applying transformation rules to exams...');
285
+ let labKeysWithRulesCount = 0;
286
+ let transformedLabKeysCount = 0;
287
+ const applicationErrorMessages = [];
288
+ for (const exam of exams) {
289
+ const labKey = exam.ohtExam.labKey;
290
+ const rulesChain = transformationRules.get(labKey);
291
+ if (!rulesChain || rulesChain.length === 0) {
292
+ transformedExams.push(exam);
293
+ continue;
294
+ }
295
+ labKeysWithRulesCount++;
296
+ try {
297
+ const result = await (0, transformationRules_service_1.applyRules)(rulesChain, exam.ohtExam, {
298
+ ohtReportJson: ohtReport,
299
+ contextJson: reportContext,
300
+ });
301
+ if (result.errors.length > 0) {
302
+ logger.warn({ labKey, errors: result.errors, filename }, 'Errors applying transformation rule(s) for labKey.');
303
+ applicationErrorMessages.push(`${labKey}: ${result.errors.map(e => `(rule ID ${e.ruleId}) ${e.error}`).join('; ')}`);
304
+ }
305
+ else {
306
+ if (result.appliedRules.length > 0) {
307
+ transformedLabKeysCount++;
308
+ }
309
+ logger.info({ labKey, appliedRules: result.appliedRules.length, filename }, 'Done applying transformation rule(s) for labKey.');
310
+ // Add the transformed exam to the result array only if there are no errors in the chain
311
+ transformedExams.push({
312
+ ohtExam: result.data,
313
+ originalExam: exam.originalExam
314
+ });
315
+ }
316
+ }
317
+ catch (error) {
318
+ logger.error({ labKey, error, filename }, 'Failed to apply transformation rules for labKey.');
319
+ applicationErrorMessages.push(`${labKey}: Unhandled error occurred.`);
320
+ }
321
+ }
322
+ logger.info({
323
+ filename,
324
+ examsCount: exams.length,
325
+ chainsCount: transformationRules.size,
326
+ transformedLabKeysCount,
327
+ labKeysWithRulesCount,
328
+ }, 'Done applying the transformation rules to exams.');
329
+ return {
330
+ transformedExams,
331
+ applicationErrorMessages
332
+ };
333
+ }
334
+ async function ohtAgnosticMeasurementsExtractor(labToOhtContract, exams, transformationRules, ohtCoreApiKey, partnerId) {
335
+ filename = labToOhtContract.sourceFilename;
336
+ const measurements = [];
337
+ const unknownMeasurements = [];
338
+ const unknownUnits = [];
339
+ let isReportCorrectlyParsed = true;
340
+ let transformationRulesErrors = [];
341
+ // Apply transformation rules to all exams
342
+ let transformedExamsResult = { transformedExams: [], applicationErrorMessages: [] };
343
+ try {
344
+ transformedExamsResult = await applyTransformationRulesToExams(exams, transformationRules, labToOhtContract.patientInfo, labToOhtContract.documentDate);
345
+ }
346
+ catch (error) {
347
+ logger.error({ error, filename }, 'Unhandled error while applying transformation rules to exams.');
348
+ labToOhtContract.errorMessages.push({
349
+ destination: { slack: true, notes: true, bi: false },
350
+ message: `Failed applying the transformation rules for filename ${filename}. ${error instanceof Error ? error.message : error}`,
351
+ });
352
+ }
353
+ if (transformedExamsResult.applicationErrorMessages.length > 0) {
354
+ transformationRulesErrors = transformedExamsResult.applicationErrorMessages;
355
+ labToOhtContract.errorMessages.push({
356
+ destination: { slack: false, notes: true, bi: false },
357
+ message: `Failed applying some transformation rules:\n${transformedExamsResult.applicationErrorMessages.map((e) => ` - ${e}`).join("\n\n")}`,
358
+ });
359
+ }
360
+ const transformedExams = transformedExamsResult.transformedExams;
361
+ const transformedExamsMap = transformedExams.reduce((map, exam) => map.set(exam.ohtExam.labKey, exam), new Map());
362
+ const allPossibleOHTBmIds = [];
363
+ [
364
+ ...Object.values(labToOhtContract.labToOhtList)
365
+ ].forEach(labToOhtMapper => {
366
+ if (labToOhtMapper.ohtBmId) {
367
+ allPossibleOHTBmIds.push(labToOhtMapper.ohtBmId);
368
+ }
369
+ });
370
+ // data to request api
371
+ const requestData = {
372
+ "biomarkerIds": allPossibleOHTBmIds,
373
+ "page": 1,
374
+ "pageSize": allPossibleOHTBmIds.length
375
+ };
376
+ // api call to ohtCore to find biomarkers.
377
+ const biomarkers = await (0, apiUtils_1.makeApiCallWithRetry)('post', `${OHT_CORE_URL}/v1/biomarker/biomarkers`, requestData, ohtCoreApiKey);
378
+ // Fetch synonym units from API if enabled
379
+ let synonymUnits = null;
380
+ if (partnerId) {
381
+ synonymUnits = await (0, dataUtils_1.fetchSynonymUnits)(partnerId, ohtCoreApiKey);
382
+ // If API fetch failed or returned empty, set to null to use hardcoded fallback
383
+ if (synonymUnits.length === 0) {
384
+ synonymUnits = null;
385
+ }
386
+ }
387
+ labToOhtContract.labToOhtList.forEach((labToOhtMapper) => {
388
+ let isMeasurementCorrectlyParsed = true;
389
+ if (!labToOhtMapper.ohtExam) {
390
+ labToOhtContract.errorMessages.push({
391
+ destination: { slack: true, notes: false, bi: false },
392
+ message: `Missing ohtExam for labKey: ${labToOhtMapper.ohtExam?.labKey || 'unknown'} filename: ${filename}`,
393
+ });
394
+ return;
395
+ }
396
+ // Get the transformed exam for this labKey, or use the original ohtExam
397
+ const transformedExam = transformedExamsMap.get(labToOhtMapper.ohtExam.labKey);
398
+ const examObj = transformedExam ? transformedExam.ohtExam : labToOhtMapper.ohtExam;
399
+ if (labToOhtMapper?.ohtBmId && labToOhtMapper?.ohtBmId !== -1) {
400
+ // if BM is already in measurements, continue to the next one
401
+ if (measurements.some(measurement => measurement.biomarkerId === labToOhtMapper.ohtBmId)) {
402
+ logger.warn({ labToOhtMapper }, `Biomarker already in measurements array, should investigate, filename: ${filename}`);
403
+ labToOhtContract.errorMessages.push({
404
+ destination: { slack: false, notes: false, bi: true },
405
+ message: `Biomarkers Duplicated keys:[PLACEHOLDER]`,
406
+ item: `bmId:${labToOhtMapper.ohtBmId}, labKey:${examObj.labKey}`
407
+ });
408
+ return;
409
+ }
410
+ const ohtBiomarker = biomarkers?.data?.items.find((bm) => bm.id === labToOhtMapper.ohtBmId);
411
+ // Used for error messages
412
+ const bmInfo = ohtBiomarker?.acf?.shortName ?
413
+ `name:${ohtBiomarker.acf.shortName}, bmId:${labToOhtMapper.ohtBmId}, labKey:${examObj.labKey}` :
414
+ `bmId:${labToOhtMapper.ohtBmId}, labKey:${examObj.labKey}`;
415
+ const { unit, isUnitParsedCorrectly, originalUnit, isArbitraryUnit, unknownUnit } = agnosticExtractUnit(examObj, ohtBiomarker, synonymUnits, partnerId);
416
+ if (unknownUnit.length > 0) {
417
+ unknownUnits.push({
418
+ biomarkerId: ohtBiomarker.id,
419
+ unit: unknownUnit,
420
+ partnerId: partnerId,
421
+ labKey: examObj.labKey,
422
+ ohtExam: labToOhtMapper.ohtExam,
423
+ originalExam: labToOhtMapper.originalExam,
424
+ biomarkerName: examObj.mnemonic || '',
425
+ dataImportFileUploadId: null, // is null it will be set later in the structParser.service.ts
426
+ });
427
+ }
428
+ if (!isUnitParsedCorrectly) {
429
+ logger.warn({ labToOhtMapper }, `Unit not extracted correctly for "${labToOhtMapper.ohtBmId}|${examObj.labKey}", filename: ${filename}`);
430
+ labToOhtContract.errorMessages.push({
431
+ destination: { slack: true, notes: true, bi: true },
432
+ message: `Unit not extracted correctly for:[PLACEHOLDER]`,
433
+ item: `${bmInfo}`
434
+ });
435
+ isMeasurementCorrectlyParsed = false;
436
+ }
437
+ let { valueType, alphanumericalValue, numberValue, valueComparator, isValueParsedCorrectly } = agnosticParseExamValue(examObj, ohtBiomarker);
438
+ if (!isValueParsedCorrectly) {
439
+ logger.warn({ labToOhtMapper }, `Value not extracted correctly for "${labToOhtMapper.ohtBmId}|${examObj.labKey}", filename: ${filename}`);
440
+ labToOhtContract.errorMessages.push({
441
+ destination: { slack: true, notes: true, bi: true },
442
+ message: `Value not extracted correctly for:[PLACEHOLDER]`,
443
+ item: `${bmInfo}`
444
+ });
445
+ isMeasurementCorrectlyParsed = false;
446
+ }
447
+ if ((0, dataUtils_1.isNumericalWithoutValidResult)(valueType, numberValue, alphanumericalValue)) {
448
+ const alphanumericalValueTrimmed = alphanumericalValue?.trim() ?? '';
449
+ const unknownMeasurement = {
450
+ labKey: examObj.labKey,
451
+ biomarkerName: examObj.description ?? '',
452
+ value: alphanumericalValueTrimmed,
453
+ unit: unit ?? '',
454
+ annotation: examObj.annotation ?? '',
455
+ dataOrigin: [{
456
+ itemExtracted: 'measurement',
457
+ method: 'custom-parser',
458
+ methodVersion: 'oht-custom-parser-lib',
459
+ path: 'exams',
460
+ }],
461
+ originalName: examObj.examName ?? '',
462
+ originalExam: {
463
+ contentType: 'application/json',
464
+ exam: JSON.stringify(examObj)
465
+ },
466
+ ohtExam: examObj
467
+ };
468
+ unknownMeasurements.push(unknownMeasurement);
469
+ return;
470
+ }
471
+ // Check if the value is plausible
472
+ if (isValueParsedCorrectly && valueType === 'NUMERICAL') {
473
+ const isPlausibleValue = numberValue !== null && agnosticCheckValueForPlausibleValues(labToOhtMapper, ohtBiomarker, unit, numberValue, isUnitParsedCorrectly);
474
+ if (!isPlausibleValue) {
475
+ logger.warn({ labToOhtMapper }, `Value [${numberValue} ${unit}] is not plausible for "${labToOhtMapper.ohtBmId}|${examObj.labKey}", filename: ${filename}`);
476
+ labToOhtContract.errorMessages.push({
477
+ destination: { slack: true, notes: true, bi: true },
478
+ message: `Value is not plausible for:[PLACEHOLDER]`,
479
+ item: `${bmInfo}, value:${numberValue}${unit}`
480
+ });
481
+ isMeasurementCorrectlyParsed = false;
482
+ }
483
+ }
484
+ let from = null, to = null;
485
+ let isRangeParsedCorrectly = true;
486
+ // If the biomarker is numerical, extract the reference range
487
+ if ((0, dataUtils_1.isBiomarkerValueNumerical)(ohtBiomarker)) {
488
+ const extractedRange = agnosticExtractReferenceRanges(labToOhtMapper, examObj, labToOhtContract.patientInfo, labToOhtContract.documentDate);
489
+ from = extractedRange.from ?? null;
490
+ to = extractedRange.to ?? null;
491
+ isRangeParsedCorrectly = extractedRange.isRangeParsedCorrectly;
492
+ if (!isRangeParsedCorrectly) {
493
+ logger.warn({ labToOhtMapper }, `Range not extracted correctly for "${labToOhtMapper.ohtBmId}|${examObj.labKey}", filename: ${filename}`);
494
+ labToOhtContract.errorMessages.push({
495
+ destination: { slack: true, notes: true, bi: true },
496
+ message: `Range not extracted correctly for:[PLACEHOLDER]`,
497
+ item: `${bmInfo}`
498
+ });
499
+ isMeasurementCorrectlyParsed = false;
500
+ }
501
+ }
502
+ let extractedAnnotation;
503
+ if (labToOhtMapper?.referenceAsAnnotation?.use || labToOhtMapper?.annotationConfig?.enabled) {
504
+ extractedAnnotation = agnosticExtractReferenceAnnotation(labToOhtMapper, examObj, labToOhtContract.patientInfo, labToOhtContract.documentDate, transformedExams);
505
+ }
506
+ // Use material and method directly from ohtExam
507
+ const material = examObj?.material ?? '';
508
+ const method = examObj?.method ?? '';
509
+ let alphaValue = !(0, dataUtils_1.isBiomarkerValueNumerical)(ohtBiomarker) && alphanumericalValue
510
+ ? alphanumericalValue.trim()
511
+ : '';
512
+ // adding unit for alphanumerical values as number.
513
+ if (!Number.isNaN(parseFloat(alphaValue))) {
514
+ // Use unit directly from ohtExam
515
+ let originalUnit = examObj?.unit ?? '';
516
+ originalUnit = originalUnit?.replaceAll(/ /g, '') ?? '';
517
+ alphaValue = alphaValue && unit?.length > 0 ? `${alphaValue} ${originalUnit}`.trim() : alphaValue;
518
+ }
519
+ // adding dates for measurements in ISO 8601 format
520
+ const collectionDate = examObj.collectionDate ? new Date(examObj.collectionDate).toISOString() : null;
521
+ const effectiveDate = examObj.effectiveDate ? new Date(examObj.effectiveDate).toISOString() : null;
522
+ const examCollectionDate = examObj.examCollectionDate ? new Date(examObj.examCollectionDate).toISOString() : null;
523
+ const examEffectiveDate = examObj.examEffectiveDate ? new Date(examObj.examEffectiveDate).toISOString() : null;
524
+ // add original name for document search
525
+ const originalName = examObj.examName ?? '';
526
+ let measurement = {
527
+ biomarkerId: ohtBiomarker.id,
528
+ valueType,
529
+ value: (0, dataUtils_1.isBiomarkerValueNumerical)(ohtBiomarker) ? numberValue : null,
530
+ alphanumericValue: alphaValue,
531
+ rangeAnnotation: extractedAnnotation ? extractedAnnotation : null,
532
+ showVisualisationIfAnnotated: false, // TODO: WHAT SHOULD BE THE DEFAULT VALUE?
533
+ comparator: valueComparator ?? oht_types_1.MeasurementValueComparator.EQUAL,
534
+ minNormalValue: from,
535
+ maxNormalValue: to,
536
+ unit,
537
+ originalUnit,
538
+ isArbitraryUnit,
539
+ material,
540
+ method,
541
+ isDigitalizationApproved: isMeasurementCorrectlyParsed,
542
+ isManualChecked: isMeasurementCorrectlyParsed,
543
+ collectionDate: collectionDate,
544
+ effectiveDate: effectiveDate,
545
+ examCollectionDate: examCollectionDate,
546
+ examEffectiveDate: examEffectiveDate,
547
+ originalName: originalName,
548
+ };
549
+ measurements.push(measurement);
550
+ }
551
+ else {
552
+ const labKey = examObj.labKey;
553
+ logger.warn(`Created an ungroupedBiomarker for id: ${labKey}, filename: ${filename}`);
554
+ labToOhtContract.errorMessages.push({
555
+ destination: { slack: false, notes: false, bi: true },
556
+ message: `Created ungroupedBiomarkers for:[PLACEHOLDER]`,
557
+ item: `labKey:${labKey}`
558
+ });
559
+ const biomarkerName = labToOhtMapper?.unknownMeasurement?.biomarkerName ?? '';
560
+ const value = labToOhtMapper?.unknownMeasurement?.value ?? '';
561
+ const unit = labToOhtMapper?.unknownMeasurement?.unit ?? '';
562
+ const annotation = labToOhtMapper?.unknownMeasurement?.annotation ?? '';
563
+ const originalName = labToOhtMapper?.unknownMeasurement?.originalName ?? '';
564
+ const originalExam = labToOhtMapper?.unknownMeasurement?.originalExam
565
+ ? {
566
+ contentType: typeof labToOhtMapper.unknownMeasurement.originalExam.contentType === 'string'
567
+ ? labToOhtMapper.unknownMeasurement.originalExam.contentType
568
+ : '',
569
+ exam: typeof labToOhtMapper.unknownMeasurement.originalExam.exam === 'string'
570
+ ? labToOhtMapper.unknownMeasurement.originalExam.exam
571
+ : String(labToOhtMapper.unknownMeasurement.originalExam.exam || '')
572
+ }
573
+ : { contentType: '', exam: '' };
574
+ const ohtExam = labToOhtMapper?.unknownMeasurement?.ohtExam
575
+ ? labToOhtMapper.unknownMeasurement.ohtExam
576
+ : { labKey: '', value: '', unit: '', collectionDate: '', documentDate: '', description: '', mnemonic: '', examName: '', range: [], annotation: '' };
577
+ const dataOrigin = labToOhtMapper?.unknownMeasurement?.dataOrigin
578
+ ? [labToOhtMapper?.unknownMeasurement?.dataOrigin]
579
+ : [{ path: '' }];
580
+ const unknownMeasurement = {
581
+ labKey: labKey,
582
+ biomarkerName: biomarkerName,
583
+ value: value,
584
+ unit: unit,
585
+ annotation: annotation,
586
+ dataOrigin: dataOrigin,
587
+ originalName: originalName,
588
+ originalExam: originalExam,
589
+ ohtExam: ohtExam
590
+ };
591
+ unknownMeasurements.push(unknownMeasurement);
592
+ }
593
+ isReportCorrectlyParsed = isReportCorrectlyParsed && isMeasurementCorrectlyParsed;
594
+ });
595
+ return {
596
+ measurements,
597
+ unknownMeasurements,
598
+ unknownUnits,
599
+ isReportCorrectlyParsed,
600
+ transformationRulesErrors,
601
+ };
602
+ }
603
+ //# sourceMappingURL=ohtAgnosticMeasurementsExtractor.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ohtAgnosticMeasurementsExtractor.service.js","sourceRoot":"","sources":["../../service/ohtAgnosticMeasurementsExtractor.service.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,7 @@ async function postReportPreviewToCore(reportPreviewId, measurements, unknownMea
63
63
  measurementsCount: (measurements || []).length,
64
64
  unknownMeasurementsCount: (unknownMeasurements || []).length,
65
65
  response: response?.data,
66
+ hasNotes: Boolean(notes?.trim()),
66
67
  }, `postReportPreviewToCore: Successfully sent report preview to OHT Core API (${(measurements || []).length} measurements, ${(unknownMeasurements || []).length} unknownMeasurements), filename: ${filename}`);
67
68
  }
68
69
  catch (apiError) {
@@ -1 +1 @@
1
- {"version":3,"file":"reportCreator.service.js","sourceRoot":"","sources":["../../service/reportCreator.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reportCreator.service.js","sourceRoot":"","sources":["../../service/reportCreator.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.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "Shared nodejs lib with with reusable functions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",