@metriport/shared 0.32.1 → 0.32.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/date.d.ts +1 -0
- package/dist/common/date.d.ts.map +1 -1
- package/dist/common/date.js +5 -1
- package/dist/common/date.js.map +1 -1
- package/dist/domain/patient/patient-import/schemas.js +1 -1
- package/dist/domain/patient/patient-import/schemas.js.map +1 -1
- package/dist/external/hl7v2/constants.d.ts +1 -1
- package/dist/external/hl7v2/constants.d.ts.map +1 -1
- package/dist/external/hl7v2/constants.js +2 -2
- package/dist/external/hl7v2/constants.js.map +1 -1
- package/dist/interface/external/ehr/canvas/cx-mapping.d.ts +3 -0
- package/dist/interface/external/ehr/canvas/cx-mapping.d.ts.map +1 -1
- package/dist/interface/external/ehr/canvas/cx-mapping.js +1 -0
- package/dist/interface/external/ehr/canvas/cx-mapping.js.map +1 -1
- package/dist/interface/external/ehr/canvas/external-event.d.ts +67 -0
- package/dist/interface/external/ehr/canvas/external-event.d.ts.map +1 -0
- package/dist/interface/external/ehr/canvas/external-event.js +48 -0
- package/dist/interface/external/ehr/canvas/external-event.js.map +1 -0
- package/dist/interface/external/ehr/canvas/index.d.ts +1 -0
- package/dist/interface/external/ehr/canvas/index.d.ts.map +1 -1
- package/dist/interface/external/ehr/canvas/index.js +1 -0
- package/dist/interface/external/ehr/canvas/index.js.map +1 -1
- package/dist/interface/external/ehr/canvas/jwt-token.d.ts +15 -0
- package/dist/interface/external/ehr/canvas/jwt-token.d.ts.map +1 -1
- package/dist/interface/external/ehr/canvas/jwt-token.js +7 -1
- package/dist/interface/external/ehr/canvas/jwt-token.js.map +1 -1
- package/dist/interface/external/ehr/healthie/allergy.d.ts +18 -18
- package/dist/interface/external/ehr/source.d.ts +2 -0
- package/dist/interface/external/ehr/source.d.ts.map +1 -1
- package/dist/interface/external/ehr/source.js +6 -1
- package/dist/interface/external/ehr/source.js.map +1 -1
- package/dist/medical/fhir/coding.d.ts +11 -0
- package/dist/medical/fhir/coding.d.ts.map +1 -1
- package/dist/medical/fhir/coding.js +27 -1
- package/dist/medical/fhir/coding.js.map +1 -1
- package/dist/medical/fhir/imaging-detection.d.ts +706 -0
- package/dist/medical/fhir/imaging-detection.d.ts.map +1 -0
- package/dist/medical/fhir/imaging-detection.js +361 -0
- package/dist/medical/fhir/imaging-detection.js.map +1 -0
- package/dist/medical/fhir/loinc/loinc-class-display-lookup.json +1730 -0
- package/dist/medical/fhir/loinc/loinc-code-class-lookup.json +432994 -0
- package/dist/medical/fhir/procedure-type.d.ts +1316 -0
- package/dist/medical/fhir/procedure-type.d.ts.map +1 -0
- package/dist/medical/fhir/procedure-type.js +263 -0
- package/dist/medical/fhir/procedure-type.js.map +1 -0
- package/dist/medical/index.d.ts +1 -0
- package/dist/medical/index.d.ts.map +1 -1
- package/dist/medical/index.js +1 -0
- package/dist/medical/index.js.map +1 -1
- package/dist/medical/webhook/webhook-request.d.ts +56 -56
- package/dist/util/index.d.ts +1 -0
- package/dist/util/index.d.ts.map +1 -1
- package/dist/util/index.js +1 -0
- package/dist/util/index.js.map +1 -1
- package/dist/util/sqs-delay-from-uuid.d.ts +11 -0
- package/dist/util/sqs-delay-from-uuid.d.ts.map +1 -0
- package/dist/util/sqs-delay-from-uuid.js +21 -0
- package/dist/util/sqs-delay-from-uuid.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.splitDiagnosticReports = exports.isImagingReport = exports.isImagingReportBasedOnDisplayValueParsing = exports.getImagingReportIdsFromProcedures = exports.isImagingCptCode = exports.IMAGING_PROCEDURE_RANGES = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const coding_1 = require("./coding");
|
|
6
|
+
const procedure_type_1 = require("./procedure-type");
|
|
7
|
+
/**
|
|
8
|
+
* Imaging procedure ranges - filtered from PROCEDURE_TYPE_RANGES where modality exists
|
|
9
|
+
*/
|
|
10
|
+
exports.IMAGING_PROCEDURE_RANGES = procedure_type_1.PROCEDURE_TYPE_RANGES.filter((range) => "modality" in range && !!range.modality);
|
|
11
|
+
/**
|
|
12
|
+
* Check if a CPT code is in the imaging range
|
|
13
|
+
*/
|
|
14
|
+
function isImagingCptCode(cptCode) {
|
|
15
|
+
const numericCode = parseInt(cptCode, 10);
|
|
16
|
+
if (isNaN(numericCode))
|
|
17
|
+
return false;
|
|
18
|
+
return exports.IMAGING_PROCEDURE_RANGES.some(range => numericCode >= range.start && numericCode <= range.end);
|
|
19
|
+
}
|
|
20
|
+
exports.isImagingCptCode = isImagingCptCode;
|
|
21
|
+
/**
|
|
22
|
+
* Check if a Procedure is an imaging procedure based on CPT codes
|
|
23
|
+
*/
|
|
24
|
+
function isImagingProcedure(procedure) {
|
|
25
|
+
if (!procedure.code?.coding)
|
|
26
|
+
return false;
|
|
27
|
+
for (const c of procedure.code.coding) {
|
|
28
|
+
const isImaging = c.system === constants_1.CPT_URL && c.code && isImagingCptCode(c.code);
|
|
29
|
+
if (isImaging)
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
function isReferenceDiagnosticReport(reference) {
|
|
35
|
+
if (!reference)
|
|
36
|
+
return false;
|
|
37
|
+
return (reference.type === "DiagnosticReport" || !!reference.reference?.startsWith("DiagnosticReport/"));
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Extract ID from a reference
|
|
41
|
+
*/
|
|
42
|
+
function getReferenceId(reference) {
|
|
43
|
+
return reference.id || reference.reference?.split("/").pop() || "";
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get set of DiagnosticReport IDs that are linked to imaging Procedures
|
|
47
|
+
* This is the PRIMARY method for identifying imaging reports
|
|
48
|
+
*/
|
|
49
|
+
function getImagingReportIdsFromProcedures(procedures) {
|
|
50
|
+
if (procedures.length === 0)
|
|
51
|
+
return new Set();
|
|
52
|
+
return new Set(procedures
|
|
53
|
+
.filter(isImagingProcedure)
|
|
54
|
+
.flatMap(p => p.report ?? [])
|
|
55
|
+
.filter(isReferenceDiagnosticReport)
|
|
56
|
+
.map(getReferenceId)
|
|
57
|
+
.filter(id => id.length > 0));
|
|
58
|
+
}
|
|
59
|
+
exports.getImagingReportIdsFromProcedures = getImagingReportIdsFromProcedures;
|
|
60
|
+
// LOINC codes for specific imaging types
|
|
61
|
+
const ECHO_LOINC_CODES = [
|
|
62
|
+
"59282-4",
|
|
63
|
+
"34552-0",
|
|
64
|
+
"18010-9",
|
|
65
|
+
"85475-2",
|
|
66
|
+
"18106-5", // Cardiac echo study Procedure
|
|
67
|
+
];
|
|
68
|
+
const PFT_LOINC_CODES = [
|
|
69
|
+
"52485-0",
|
|
70
|
+
"81459-0",
|
|
71
|
+
"20080-8",
|
|
72
|
+
"81458-2", // Pulmonary function test panel
|
|
73
|
+
];
|
|
74
|
+
const CT_LOINC_CODES = [
|
|
75
|
+
"46305-9",
|
|
76
|
+
"24725-4",
|
|
77
|
+
"24627-2",
|
|
78
|
+
"24727-0",
|
|
79
|
+
"41806-1",
|
|
80
|
+
"29252-4",
|
|
81
|
+
"30799-1", // CT Head WO contrast
|
|
82
|
+
];
|
|
83
|
+
const MRI_LOINC_CODES = [
|
|
84
|
+
"30657-1",
|
|
85
|
+
"30794-2",
|
|
86
|
+
"36046-1",
|
|
87
|
+
"24589-4",
|
|
88
|
+
"24557-1",
|
|
89
|
+
"24587-8",
|
|
90
|
+
"24556-3", // MR Abdomen
|
|
91
|
+
];
|
|
92
|
+
const XR_LOINC_CODES = [
|
|
93
|
+
"24722-1",
|
|
94
|
+
"24799-9",
|
|
95
|
+
"36643-5",
|
|
96
|
+
"22030-1",
|
|
97
|
+
"24664-5",
|
|
98
|
+
"37616-0", // XR Pelvis Single view
|
|
99
|
+
];
|
|
100
|
+
const US_LOINC_CODES = [
|
|
101
|
+
"55034-6",
|
|
102
|
+
"24531-6",
|
|
103
|
+
"34813-6",
|
|
104
|
+
"59640-3",
|
|
105
|
+
"46298-6",
|
|
106
|
+
"24857-5", // US Thyroid
|
|
107
|
+
];
|
|
108
|
+
/**
|
|
109
|
+
* Check if a report is an Echocardiogram imaging report
|
|
110
|
+
*/
|
|
111
|
+
function isEchoImagingReport(report) {
|
|
112
|
+
const codings = report.code?.coding ?? [];
|
|
113
|
+
function includesEchoInName(s) {
|
|
114
|
+
const lower = s.toLowerCase();
|
|
115
|
+
return lower.includes("echo") || lower.includes("echocardiogram");
|
|
116
|
+
}
|
|
117
|
+
const hasEchoInName = codings.some(coding => coding.display && includesEchoInName(coding.display));
|
|
118
|
+
const isEchoLoincCode = codings.some(coding => coding.code && ECHO_LOINC_CODES.includes(coding.code));
|
|
119
|
+
return hasEchoInName || isEchoLoincCode;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if a report is a PFT (Pulmonary Function Test) imaging report
|
|
123
|
+
*/
|
|
124
|
+
function isPFTImagingReport(report) {
|
|
125
|
+
const codings = report.code?.coding ?? [];
|
|
126
|
+
function includesPftInName(s) {
|
|
127
|
+
const lower = s.toLowerCase();
|
|
128
|
+
return lower.includes("pulmonary") || lower.includes("spirometry") || lower.includes("pft");
|
|
129
|
+
}
|
|
130
|
+
const hasPftInName = codings.some(coding => coding.display && includesPftInName(coding.display));
|
|
131
|
+
const isPftLoincCode = codings.some(coding => coding.code && PFT_LOINC_CODES.includes(coding.code));
|
|
132
|
+
return hasPftInName || isPftLoincCode;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if a report is a CT (Computed Tomography) imaging report
|
|
136
|
+
*/
|
|
137
|
+
function isCTImagingReport(report) {
|
|
138
|
+
const codings = report.code?.coding ?? [];
|
|
139
|
+
function includesCtInName(s) {
|
|
140
|
+
return s.toLowerCase().startsWith("ct ") || s.toLowerCase().includes(" ct ");
|
|
141
|
+
}
|
|
142
|
+
const hasCtInName = codings.some(coding => coding.display && includesCtInName(coding.display));
|
|
143
|
+
const isCtLoincCode = codings.some(coding => coding.code && CT_LOINC_CODES.includes(coding.code));
|
|
144
|
+
return hasCtInName || isCtLoincCode;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if a report is an MRI (Magnetic Resonance Imaging) report
|
|
148
|
+
*/
|
|
149
|
+
function isMRIImagingReport(report) {
|
|
150
|
+
const codings = report.code?.coding ?? [];
|
|
151
|
+
function includesMriInName(s) {
|
|
152
|
+
return (s.toLowerCase().startsWith("mr ") ||
|
|
153
|
+
s.toLowerCase().includes(" mr ") ||
|
|
154
|
+
s.toLowerCase().includes("mri"));
|
|
155
|
+
}
|
|
156
|
+
const hasMriInName = codings.some(coding => coding.display && includesMriInName(coding.display));
|
|
157
|
+
const isMriLoincCode = codings.some(coding => coding.code && MRI_LOINC_CODES.includes(coding.code));
|
|
158
|
+
return hasMriInName || isMriLoincCode;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Check if a report is an XR (X-Ray) imaging report
|
|
162
|
+
*/
|
|
163
|
+
function isXRImagingReport(report) {
|
|
164
|
+
const codings = report.code?.coding ?? [];
|
|
165
|
+
function includesXrInName(s) {
|
|
166
|
+
return s.toLowerCase().startsWith("xr ") || s.toLowerCase().includes(" xr ");
|
|
167
|
+
}
|
|
168
|
+
const hasXrInName = codings.some(coding => coding.display && includesXrInName(coding.display));
|
|
169
|
+
const isXrLoincCode = codings.some(coding => coding.code && XR_LOINC_CODES.includes(coding.code));
|
|
170
|
+
return hasXrInName || isXrLoincCode;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Check if a report is an Ultrasound imaging report
|
|
174
|
+
*/
|
|
175
|
+
function isUltrasoundImagingReport(report) {
|
|
176
|
+
const codings = report.code?.coding ?? [];
|
|
177
|
+
function includesUsInName(s) {
|
|
178
|
+
return (s.toLowerCase().startsWith("us ") ||
|
|
179
|
+
s.toLowerCase().includes(" us ") ||
|
|
180
|
+
s.toLowerCase().startsWith("us-") ||
|
|
181
|
+
s.toLowerCase().includes("ultrasound"));
|
|
182
|
+
}
|
|
183
|
+
const hasUsInName = codings.some(coding => coding.display && includesUsInName(coding.display));
|
|
184
|
+
const isUsLoincCode = codings.some(coding => coding.code && US_LOINC_CODES.includes(coding.code));
|
|
185
|
+
return hasUsInName || isUsLoincCode;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Check if a report is an imaging report based on display value parsing
|
|
189
|
+
* This is a fallback for when the report is not categorized by a LOINC code
|
|
190
|
+
*/
|
|
191
|
+
function isImagingReportBasedOnDisplayValueParsing(report) {
|
|
192
|
+
return (isEchoImagingReport(report) ||
|
|
193
|
+
isPFTImagingReport(report) ||
|
|
194
|
+
isCTImagingReport(report) ||
|
|
195
|
+
isMRIImagingReport(report) ||
|
|
196
|
+
isXRImagingReport(report) ||
|
|
197
|
+
isUltrasoundImagingReport(report));
|
|
198
|
+
}
|
|
199
|
+
exports.isImagingReportBasedOnDisplayValueParsing = isImagingReportBasedOnDisplayValueParsing;
|
|
200
|
+
/**
|
|
201
|
+
* Get practitioners referenced by a DiagnosticReport
|
|
202
|
+
*/
|
|
203
|
+
function getReportPractitioners(report, practitionerMap) {
|
|
204
|
+
const practitioners = [];
|
|
205
|
+
for (const performer of report.performer ?? []) {
|
|
206
|
+
if (performer.reference?.startsWith("Practitioner/")) {
|
|
207
|
+
const id = performer.reference.split("/")[1];
|
|
208
|
+
const practitioner = id ? practitionerMap.get(id) : undefined;
|
|
209
|
+
if (practitioner)
|
|
210
|
+
practitioners.push(practitioner);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return practitioners;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Get organizations referenced by a DiagnosticReport
|
|
217
|
+
*/
|
|
218
|
+
function getReportOrganizations(report, organizationMap) {
|
|
219
|
+
const organizations = [];
|
|
220
|
+
for (const performer of report.performer ?? []) {
|
|
221
|
+
if (performer.reference?.startsWith("Organization/")) {
|
|
222
|
+
const id = performer.reference.split("/")[1];
|
|
223
|
+
const organization = id ? organizationMap.get(id) : undefined;
|
|
224
|
+
if (organization)
|
|
225
|
+
organizations.push(organization);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return organizations;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Get practitioners from an Encounter
|
|
232
|
+
*/
|
|
233
|
+
function getEncounterPractitioners(encounter, practitionerMap) {
|
|
234
|
+
const practitioners = [];
|
|
235
|
+
for (const participant of encounter.participant ?? []) {
|
|
236
|
+
if (participant.individual?.reference?.startsWith("Practitioner/")) {
|
|
237
|
+
const id = participant.individual.reference.split("/")[1];
|
|
238
|
+
const practitioner = id ? practitionerMap.get(id) : undefined;
|
|
239
|
+
if (practitioner)
|
|
240
|
+
practitioners.push(practitioner);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return practitioners;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Get organizations from an Encounter
|
|
247
|
+
*/
|
|
248
|
+
function getEncounterOrganizations(encounter, organizationMap) {
|
|
249
|
+
const organizations = [];
|
|
250
|
+
if (encounter.serviceProvider?.reference?.startsWith("Organization/")) {
|
|
251
|
+
const id = encounter.serviceProvider.reference.split("/")[1];
|
|
252
|
+
const organization = id ? organizationMap.get(id) : undefined;
|
|
253
|
+
if (organization)
|
|
254
|
+
organizations.push(organization);
|
|
255
|
+
}
|
|
256
|
+
return organizations;
|
|
257
|
+
}
|
|
258
|
+
function buildContextMaps(context) {
|
|
259
|
+
const practitionerMap = new Map();
|
|
260
|
+
for (const p of context.practitioners) {
|
|
261
|
+
if (p.id)
|
|
262
|
+
practitionerMap.set(p.id, p);
|
|
263
|
+
}
|
|
264
|
+
const organizationMap = new Map();
|
|
265
|
+
for (const o of context.organizations) {
|
|
266
|
+
if (o.id)
|
|
267
|
+
organizationMap.set(o.id, o);
|
|
268
|
+
}
|
|
269
|
+
const encounterMap = new Map();
|
|
270
|
+
for (const e of context.encounters) {
|
|
271
|
+
if (e.id)
|
|
272
|
+
encounterMap.set(e.id, e);
|
|
273
|
+
}
|
|
274
|
+
return { practitionerMap, organizationMap, encounterMap };
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Main function to determine if a DiagnosticReport is an imaging report
|
|
278
|
+
* This is the primary logic used to split DiagnosticReports into Imaging vs Clinical Notes
|
|
279
|
+
*/
|
|
280
|
+
function isImagingReport(report, imagingReportIds, context, maps) {
|
|
281
|
+
// 1. Check if report ID is in the set of imaging report IDs (from Procedures)
|
|
282
|
+
if (report.id && imagingReportIds.has(report.id)) {
|
|
283
|
+
return true;
|
|
284
|
+
}
|
|
285
|
+
// 2. Check LOINC code class - if abbreviation is "RAD" (Radiology)
|
|
286
|
+
const loincCoding = report.code?.coding?.find(coding_1.isLoincCoding);
|
|
287
|
+
if (loincCoding && loincCoding.code) {
|
|
288
|
+
const loincClass = (0, coding_1.getLoincCodeClass)(loincCoding.code);
|
|
289
|
+
if (loincClass?.abbreviation === "RAD") {
|
|
290
|
+
return true;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// 3. Check display value parsing (fallback for uncategorized reports)
|
|
294
|
+
if (isImagingReportBasedOnDisplayValueParsing(report)) {
|
|
295
|
+
return true;
|
|
296
|
+
}
|
|
297
|
+
const { practitionerMap, organizationMap, encounterMap } = maps ?? buildContextMaps(context);
|
|
298
|
+
// Get the encounter for the report
|
|
299
|
+
const encounterId = report.encounter?.reference?.split("/").pop();
|
|
300
|
+
const encounter = encounterId ? encounterMap.get(encounterId) : undefined;
|
|
301
|
+
// 4. Check practitioner qualifications
|
|
302
|
+
const reportPractitioners = getReportPractitioners(report, practitionerMap);
|
|
303
|
+
const encounterPractitioners = encounter
|
|
304
|
+
? getEncounterPractitioners(encounter, practitionerMap)
|
|
305
|
+
: [];
|
|
306
|
+
const allPractitioners = [...reportPractitioners, ...encounterPractitioners];
|
|
307
|
+
for (const practitioner of allPractitioners) {
|
|
308
|
+
if (practitioner.qualification) {
|
|
309
|
+
for (const qualification of practitioner.qualification) {
|
|
310
|
+
if (qualification.code?.text) {
|
|
311
|
+
const qualificationText = qualification.code.text.toLowerCase();
|
|
312
|
+
if (qualificationText.includes("radiology") || qualificationText.includes("imaging")) {
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
if (qualification.code?.coding) {
|
|
317
|
+
for (const coding of qualification.code.coding) {
|
|
318
|
+
const display = coding.display?.toLowerCase();
|
|
319
|
+
if (display && (display.includes("radiology") || display.includes("imaging"))) {
|
|
320
|
+
return true;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
// 5. Check organization names
|
|
328
|
+
const reportOrganizations = getReportOrganizations(report, organizationMap);
|
|
329
|
+
const encounterOrganizations = encounter
|
|
330
|
+
? getEncounterOrganizations(encounter, organizationMap)
|
|
331
|
+
: [];
|
|
332
|
+
const allOrganizations = [...reportOrganizations, ...encounterOrganizations];
|
|
333
|
+
for (const organization of allOrganizations) {
|
|
334
|
+
const name = organization.name?.toLowerCase();
|
|
335
|
+
if (name && (name.includes("radiology") || name.includes("imaging"))) {
|
|
336
|
+
return true;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
exports.isImagingReport = isImagingReport;
|
|
342
|
+
/**
|
|
343
|
+
* Split diagnostic reports into imaging reports and clinical notes
|
|
344
|
+
*/
|
|
345
|
+
function splitDiagnosticReports(diagnosticReports, procedures, context) {
|
|
346
|
+
const imagingReportIds = getImagingReportIdsFromProcedures(procedures);
|
|
347
|
+
const maps = buildContextMaps(context);
|
|
348
|
+
const imagingReports = [];
|
|
349
|
+
const clinicalNotes = [];
|
|
350
|
+
for (const report of diagnosticReports) {
|
|
351
|
+
if (isImagingReport(report, imagingReportIds, context, maps)) {
|
|
352
|
+
imagingReports.push(report);
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
clinicalNotes.push(report);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return { imagingReports, clinicalNotes };
|
|
359
|
+
}
|
|
360
|
+
exports.splitDiagnosticReports = splitDiagnosticReports;
|
|
361
|
+
//# sourceMappingURL=imaging-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imaging-detection.js","sourceRoot":"","sources":["../../../src/medical/fhir/imaging-detection.ts"],"names":[],"mappings":";;;AAUA,2CAAsC;AACtC,qCAA4D;AAC5D,qDAAyD;AAGzD;;GAEG;AACU,QAAA,wBAAwB,GAAG,sCAAqB,CAAC,MAAM,CAClE,CAAC,KAAK,EAAgD,EAAE,CAAC,UAAU,IAAI,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CACjG,CAAC;AAEF;;GAEG;AACH,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,gCAAwB,CAAC,IAAI,CAClC,KAAK,CAAC,EAAE,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,IAAI,WAAW,IAAI,KAAK,CAAC,GAAG,CAChE,CAAC;AACJ,CAAC;AAND,4CAMC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,SAAoB;IAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE;QACrC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,KAAK,mBAAO,IAAI,CAAC,CAAC,IAAI,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,SAAS;YAAE,OAAO,IAAI,CAAC;KAC5B;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,2BAA2B,CAClC,SAA8B;IAE9B,IAAI,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,CACL,SAAS,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAChG,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,SAAsC;IAC5D,OAAO,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,SAAgB,iCAAiC,CAAC,UAAuB;IACvE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAC9C,OAAO,IAAI,GAAG,CACZ,UAAU;SACP,MAAM,CAAC,kBAAkB,CAAC;SAC1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,2BAA2B,CAAC;SACnC,GAAG,CAAC,cAAc,CAAC;SACnB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/B,CAAC;AACJ,CAAC;AAVD,8EAUC;AAED,yCAAyC;AACzC,MAAM,gBAAgB,GAAG;IACvB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS,EAAE,+BAA+B;CAC3C,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS,EAAE,gCAAgC;CAC5C,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS,EAAE,sBAAsB;CAClC,CAAC;AAEF,MAAM,eAAe,GAAG;IACtB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS,EAAE,aAAa;CACzB,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS,EAAE,wBAAwB;CACpC,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS,EAAE,aAAa;CACzB,CAAC;AAEF;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAwB;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,SAAS,kBAAkB,CAAC,CAAS;QACnC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAChC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAC/D,CAAC;IACF,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAClC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAChE,CAAC;IACF,OAAO,aAAa,IAAI,eAAe,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAwB;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,SAAS,iBAAiB,CAAC,CAAS;QAClC,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACjG,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CACjC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAC/D,CAAC;IACF,OAAO,YAAY,IAAI,cAAc,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAwB;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,SAAS,gBAAgB,CAAC,CAAS;QACjC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/F,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,OAAO,WAAW,IAAI,aAAa,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAwB;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,SAAS,iBAAiB,CAAC,CAAS;QAClC,OAAO,CACL,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACjC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACjG,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CACjC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAC/D,CAAC;IACF,OAAO,YAAY,IAAI,cAAc,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAwB;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,SAAS,gBAAgB,CAAC,CAAS;QACjC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/F,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,OAAO,WAAW,IAAI,aAAa,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAAC,MAAwB;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IAC1C,SAAS,gBAAgB,CAAC,CAAS;QACjC,OAAO,CACL,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACjC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YAChC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;YACjC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CACvC,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/F,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,OAAO,WAAW,IAAI,aAAa,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,SAAgB,yCAAyC,CAAC,MAAwB;IAChF,OAAO,CACL,mBAAmB,CAAC,MAAM,CAAC;QAC3B,kBAAkB,CAAC,MAAM,CAAC;QAC1B,iBAAiB,CAAC,MAAM,CAAC;QACzB,kBAAkB,CAAC,MAAM,CAAC;QAC1B,iBAAiB,CAAC,MAAM,CAAC;QACzB,yBAAyB,CAAC,MAAM,CAAC,CAClC,CAAC;AACJ,CAAC;AATD,8FASC;AAQD;;GAEG;AACH,SAAS,sBAAsB,CAC7B,MAAwB,EACxB,eAA0C;IAE1C,MAAM,aAAa,GAAmB,EAAE,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE;QAC9C,IAAI,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,EAAE;YACpD,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,IAAI,YAAY;gBAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;KACF;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAC7B,MAAwB,EACxB,eAA0C;IAE1C,MAAM,aAAa,GAAmB,EAAE,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE;QAC9C,IAAI,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,EAAE;YACpD,MAAM,EAAE,GAAG,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,IAAI,YAAY;gBAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;KACF;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,SAAoB,EACpB,eAA0C;IAE1C,MAAM,aAAa,GAAmB,EAAE,CAAC;IACzC,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,WAAW,IAAI,EAAE,EAAE;QACrD,IAAI,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,EAAE;YAClE,MAAM,EAAE,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,IAAI,YAAY;gBAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;KACF;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,SAAoB,EACpB,eAA0C;IAE1C,MAAM,aAAa,GAAmB,EAAE,CAAC;IACzC,IAAI,SAAS,CAAC,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC,eAAe,CAAC,EAAE;QACrE,MAAM,EAAE,GAAG,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,IAAI,YAAY;YAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACpD;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAQD,SAAS,gBAAgB,CAAC,OAAgC;IACxD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE;QACrC,IAAI,CAAC,CAAC,EAAE;YAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACxC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwB,CAAC;IACxD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,aAAa,EAAE;QACrC,IAAI,CAAC,CAAC,EAAE;YAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACxC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,EAAE;QAClC,IAAI,CAAC,CAAC,EAAE;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACrC;IAED,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAC7B,MAAwB,EACxB,gBAA6B,EAC7B,OAAgC,EAChC,IAAsB;IAEtB,8EAA8E;IAC9E,IAAI,MAAM,CAAC,EAAE,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACb;IAED,mEAAmE;IACnE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,sBAAa,CAAC,CAAC;IAC7D,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;QACnC,MAAM,UAAU,GAAG,IAAA,0BAAiB,EAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,UAAU,EAAE,YAAY,KAAK,KAAK,EAAE;YACtC,OAAO,IAAI,CAAC;SACb;KACF;IAED,sEAAsE;IACtE,IAAI,yCAAyC,CAAC,MAAM,CAAC,EAAE;QACrD,OAAO,IAAI,CAAC;KACb;IAED,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAE7F,mCAAmC;IACnC,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAClE,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE1E,uCAAuC;IACvC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5E,MAAM,sBAAsB,GAAG,SAAS;QACtC,CAAC,CAAC,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACvD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,sBAAsB,CAAC,CAAC;IAE7E,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE;QAC3C,IAAI,YAAY,CAAC,aAAa,EAAE;YAC9B,KAAK,MAAM,aAAa,IAAI,YAAY,CAAC,aAAa,EAAE;gBACtD,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;oBAC5B,MAAM,iBAAiB,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAChE,IAAI,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;wBACpF,OAAO,IAAI,CAAC;qBACb;iBACF;gBACD,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE;oBAC9B,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE;wBAC9C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;wBAC9C,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;4BAC7E,OAAO,IAAI,CAAC;yBACb;qBACF;iBACF;aACF;SACF;KACF;IAED,8BAA8B;IAC9B,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5E,MAAM,sBAAsB,GAAG,SAAS;QACtC,CAAC,CAAC,yBAAyB,CAAC,SAAS,EAAE,eAAe,CAAC;QACvD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,gBAAgB,GAAG,CAAC,GAAG,mBAAmB,EAAE,GAAG,sBAAsB,CAAC,CAAC;IAE7E,KAAK,MAAM,YAAY,IAAI,gBAAgB,EAAE;QAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC;QAC9C,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE;YACpE,OAAO,IAAI,CAAC;SACb;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AA1ED,0CA0EC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CACpC,iBAAqC,EACrC,UAAuB,EACvB,OAAgC;IAEhC,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,UAAU,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEvC,MAAM,cAAc,GAAuB,EAAE,CAAC;IAC9C,MAAM,aAAa,GAAuB,EAAE,CAAC;IAE7C,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE;QACtC,IAAI,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE;YAC5D,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;aAAM;YACL,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC5B;KACF;IAED,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,CAAC;AAC3C,CAAC;AApBD,wDAoBC"}
|