@crvouga/mockingbird-service-junction 0.1.1 → 0.2.0
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/CHANGELOG.md +31 -0
- package/README.md +448 -133
- package/dist/chunk-4C6VYRJN.js +18 -0
- package/dist/chunk-4C6VYRJN.js.map +7 -0
- package/dist/chunk-KKNULV7X.js +406 -0
- package/dist/chunk-KKNULV7X.js.map +7 -0
- package/dist/chunk-MA3HSUVD.js +7771 -0
- package/dist/chunk-MA3HSUVD.js.map +7 -0
- package/dist/chunk-MD4KYEIM.js +145758 -0
- package/dist/chunk-MD4KYEIM.js.map +7 -0
- package/dist/cli.js +214 -0
- package/dist/cli.js.map +7 -0
- package/dist/corpus.d.ts +97 -0
- package/dist/corpus.js +8 -0
- package/dist/corpus.js.map +7 -0
- package/dist/index.d.ts +1131 -21
- package/dist/index.js +82 -120
- package/dist/index.js.map +7 -1
- package/dist/server.d.ts +978 -0
- package/dist/server.js +16 -0
- package/dist/server.js.map +7 -0
- package/package.json +32 -12
- package/dist/catalog.d.ts +0 -63
- package/dist/catalog.d.ts.map +0 -1
- package/dist/catalog.js +0 -736
- package/dist/catalog.js.map +0 -1
- package/dist/coverage-corpus.d.ts +0 -76
- package/dist/coverage-corpus.d.ts.map +0 -1
- package/dist/coverage-corpus.js +0 -166
- package/dist/coverage-corpus.js.map +0 -1
- package/dist/generated/openapi.d.ts +0 -7
- package/dist/generated/openapi.d.ts.map +0 -1
- package/dist/generated/openapi.js +0 -5
- package/dist/generated/openapi.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lab-accounts.d.ts +0 -38
- package/dist/lab-accounts.d.ts.map +0 -1
- package/dist/lab-accounts.js +0 -213
- package/dist/lab-accounts.js.map +0 -1
- package/dist/orders.d.ts +0 -18
- package/dist/orders.d.ts.map +0 -1
- package/dist/orders.js +0 -1247
- package/dist/orders.js.map +0 -1
- package/dist/prefetch.d.ts +0 -43
- package/dist/prefetch.d.ts.map +0 -1
- package/dist/prefetch.js +0 -131
- package/dist/prefetch.js.map +0 -1
- package/dist/reshape.d.ts +0 -22
- package/dist/reshape.d.ts.map +0 -1
- package/dist/reshape.js +0 -190
- package/dist/reshape.js.map +0 -1
- package/dist/results.d.ts +0 -19
- package/dist/results.d.ts.map +0 -1
- package/dist/results.js +0 -221
- package/dist/results.js.map +0 -1
- package/dist/scheduling.d.ts +0 -113
- package/dist/scheduling.d.ts.map +0 -1
- package/dist/scheduling.js +0 -1508
- package/dist/scheduling.js.map +0 -1
- package/dist/sealed-corpus.d.ts +0 -28
- package/dist/sealed-corpus.d.ts.map +0 -1
- package/dist/sealed-corpus.js +0 -17
- package/dist/sealed-corpus.js.map +0 -1
- package/dist/seed-from.d.ts +0 -27
- package/dist/seed-from.d.ts.map +0 -1
- package/dist/seed-from.js +0 -523
- package/dist/seed-from.js.map +0 -1
- package/dist/seeds.d.ts +0 -9
- package/dist/seeds.d.ts.map +0 -1
- package/dist/seeds.js +0 -9
- package/dist/seeds.js.map +0 -1
- package/dist/state.d.ts +0 -270
- package/dist/state.d.ts.map +0 -1
- package/dist/state.js +0 -448
- package/dist/state.js.map +0 -1
- package/dist/users.d.ts +0 -13
- package/dist/users.d.ts.map +0 -1
- package/dist/users.js +0 -669
- package/dist/users.js.map +0 -1
package/dist/seed-from.js
DELETED
|
@@ -1,523 +0,0 @@
|
|
|
1
|
-
import { addressFromAvailabilityRequest } from "./scheduling.js";
|
|
2
|
-
const clone = (value) => JSON.parse(JSON.stringify(value));
|
|
3
|
-
/**
|
|
4
|
-
* Parse the availability POST body embedded in an observation cache key
|
|
5
|
-
* (`"<METHOD> <path>?<query> <JSON body>"`).
|
|
6
|
-
*/
|
|
7
|
-
const parseAvailabilityRequestBody = (cacheKey) => {
|
|
8
|
-
const jsonStart = cacheKey.indexOf(" {");
|
|
9
|
-
if (jsonStart === -1)
|
|
10
|
-
return undefined;
|
|
11
|
-
try {
|
|
12
|
-
const parsed = JSON.parse(cacheKey.slice(jsonStart + 1));
|
|
13
|
-
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
|
|
14
|
-
return parsed;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
return undefined;
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Vital echoes the availability request address on book/reschedule. Re-stamp every
|
|
24
|
-
* booking-key record hydrated from one availability observation so its address matches
|
|
25
|
-
* the availability request — the oracle's behavior for both modalities.
|
|
26
|
-
*/
|
|
27
|
-
const alignBookingKeyAddresses = (state, body, requestBody, zip, modalityHint) => {
|
|
28
|
-
if (typeof body !== "object" || body === null || Array.isArray(body))
|
|
29
|
-
return;
|
|
30
|
-
const root = body;
|
|
31
|
-
const dayBuckets = [];
|
|
32
|
-
if (Array.isArray(root.days))
|
|
33
|
-
dayBuckets.push(...root.days);
|
|
34
|
-
if (Array.isArray(root.slots))
|
|
35
|
-
dayBuckets.push(...root.slots);
|
|
36
|
-
for (const day of dayBuckets) {
|
|
37
|
-
const slots = Array.isArray(day?.slots)
|
|
38
|
-
? day.slots
|
|
39
|
-
: [day];
|
|
40
|
-
for (const slot of slots) {
|
|
41
|
-
if (typeof slot !== "object" || slot === null || Array.isArray(slot))
|
|
42
|
-
continue;
|
|
43
|
-
const bookingKey = slot.booking_key;
|
|
44
|
-
if (typeof bookingKey !== "string" || bookingKey === "")
|
|
45
|
-
continue;
|
|
46
|
-
const record = state.bookingKeys.get(bookingKey);
|
|
47
|
-
if (!record || (modalityHint !== undefined && record.modality !== modalityHint))
|
|
48
|
-
continue;
|
|
49
|
-
record.address = addressFromAvailabilityRequest(requestBody, zip);
|
|
50
|
-
state.bookingKeys.update(bookingKey, record);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
const request = async (source, method, path, init = {}) => {
|
|
55
|
-
const url = new URL(path, source.baseUrl.endsWith("/") ? source.baseUrl : `${source.baseUrl}/`);
|
|
56
|
-
const headers = new Headers(init.headers);
|
|
57
|
-
for (const [name, value] of Object.entries(source.headers))
|
|
58
|
-
headers.set(name, value);
|
|
59
|
-
return source.fetch(new Request(url, { ...init, method, headers }));
|
|
60
|
-
};
|
|
61
|
-
const readJson = async (response) => {
|
|
62
|
-
if (response.status === 204)
|
|
63
|
-
return null;
|
|
64
|
-
const text = await response.text();
|
|
65
|
-
if (text.trim() === "")
|
|
66
|
-
return null;
|
|
67
|
-
try {
|
|
68
|
-
return JSON.parse(text);
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
return text;
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
const asRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value)
|
|
75
|
-
? value
|
|
76
|
-
: undefined;
|
|
77
|
-
const asString = (value) => typeof value === "string" ? value : undefined;
|
|
78
|
-
const mapUser = (value) => {
|
|
79
|
-
const record = asRecord(value);
|
|
80
|
-
if (!record)
|
|
81
|
-
return undefined;
|
|
82
|
-
const userId = asString(record.user_id);
|
|
83
|
-
const clientUserId = asString(record.client_user_id);
|
|
84
|
-
if (!userId || !clientUserId)
|
|
85
|
-
return undefined;
|
|
86
|
-
return {
|
|
87
|
-
user_id: userId,
|
|
88
|
-
team_id: asString(record.team_id) ?? "00000000-0000-4000-8000-000000000000",
|
|
89
|
-
client_user_id: clientUserId,
|
|
90
|
-
created_on: asString(record.created_on) ?? new Date(0).toISOString(),
|
|
91
|
-
connected_sources: Array.isArray(record.connected_sources) ? record.connected_sources : [],
|
|
92
|
-
fallback_time_zone: typeof record.fallback_time_zone === "object" && record.fallback_time_zone !== null
|
|
93
|
-
? record.fallback_time_zone
|
|
94
|
-
: null,
|
|
95
|
-
fallback_birth_date: typeof record.fallback_birth_date === "object" && record.fallback_birth_date !== null
|
|
96
|
-
? record.fallback_birth_date
|
|
97
|
-
: null,
|
|
98
|
-
ingestion_start: asString(record.ingestion_start) ?? null,
|
|
99
|
-
ingestion_end: asString(record.ingestion_end) ?? null,
|
|
100
|
-
};
|
|
101
|
-
};
|
|
102
|
-
export const mapLabTest = (value) => {
|
|
103
|
-
const record = asRecord(value);
|
|
104
|
-
if (!record)
|
|
105
|
-
return undefined;
|
|
106
|
-
const id = asString(record.id);
|
|
107
|
-
if (!id)
|
|
108
|
-
return undefined;
|
|
109
|
-
return clone(record);
|
|
110
|
-
};
|
|
111
|
-
const mapOrder = (value) => {
|
|
112
|
-
const record = asRecord(value);
|
|
113
|
-
if (!record)
|
|
114
|
-
return undefined;
|
|
115
|
-
const id = asString(record.id);
|
|
116
|
-
const userId = asString(record.user_id);
|
|
117
|
-
if (!id || !userId)
|
|
118
|
-
return undefined;
|
|
119
|
-
return clone(record);
|
|
120
|
-
};
|
|
121
|
-
const mapAppointment = (value, orderId, userId) => {
|
|
122
|
-
const record = asRecord(value);
|
|
123
|
-
if (!record)
|
|
124
|
-
return undefined;
|
|
125
|
-
const id = asString(record.id);
|
|
126
|
-
if (!id)
|
|
127
|
-
return undefined;
|
|
128
|
-
return {
|
|
129
|
-
...clone(record),
|
|
130
|
-
id,
|
|
131
|
-
order_id: asString(record.order_id) ?? orderId,
|
|
132
|
-
user_id: asString(record.user_id) ?? userId,
|
|
133
|
-
};
|
|
134
|
-
};
|
|
135
|
-
const demographicsFromOrder = (order) => {
|
|
136
|
-
const details = order.patient_details && typeof order.patient_details === "object"
|
|
137
|
-
? order.patient_details
|
|
138
|
-
: {};
|
|
139
|
-
const address = order.patient_address && typeof order.patient_address === "object"
|
|
140
|
-
? order.patient_address
|
|
141
|
-
: {};
|
|
142
|
-
return {
|
|
143
|
-
first_name: details.first_name ?? null,
|
|
144
|
-
last_name: details.last_name ?? null,
|
|
145
|
-
dob: details.dob ?? null,
|
|
146
|
-
gender: details.gender ?? null,
|
|
147
|
-
phone_number: details.phone_number ?? null,
|
|
148
|
-
email: details.email ?? null,
|
|
149
|
-
gender_identity: null,
|
|
150
|
-
sexual_orientation: null,
|
|
151
|
-
race: null,
|
|
152
|
-
ethnicity: null,
|
|
153
|
-
medical_proxy: null,
|
|
154
|
-
address: {
|
|
155
|
-
first_line: address.first_line ?? "",
|
|
156
|
-
second_line: typeof address.second_line === "string" ? address.second_line : "",
|
|
157
|
-
country: address.country ?? "",
|
|
158
|
-
zip: address.zip ?? "",
|
|
159
|
-
city: address.city ?? "",
|
|
160
|
-
state: address.state ?? "",
|
|
161
|
-
access_notes: null,
|
|
162
|
-
},
|
|
163
|
-
};
|
|
164
|
-
};
|
|
165
|
-
const ensureUserInfoForOrder = async (state, source, order) => {
|
|
166
|
-
if (state.userInfo.get(order.user_id))
|
|
167
|
-
return;
|
|
168
|
-
const infoResponse = await request(source, "GET", `/v2/user/${order.user_id}/info/latest`);
|
|
169
|
-
if (infoResponse.ok) {
|
|
170
|
-
const info = asRecord(await readJson(infoResponse));
|
|
171
|
-
if (info) {
|
|
172
|
-
state.userInfo.insert(order.user_id, info);
|
|
173
|
-
return;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
state.userInfo.insert(order.user_id, demographicsFromOrder(order));
|
|
177
|
-
};
|
|
178
|
-
const expectedFromMarkers = (labTest) => {
|
|
179
|
-
const markers = labTest.markers ?? [];
|
|
180
|
-
return markers.map((marker) => ({
|
|
181
|
-
id: marker.id,
|
|
182
|
-
name: marker.name,
|
|
183
|
-
slug: marker.slug,
|
|
184
|
-
lab_id: marker.lab_id,
|
|
185
|
-
provider_id: marker.provider_id,
|
|
186
|
-
required: true,
|
|
187
|
-
loinc: null,
|
|
188
|
-
}));
|
|
189
|
-
};
|
|
190
|
-
export const expectedFromMarkersResponse = async (source, test) => {
|
|
191
|
-
const markersResponse = await request(source, "GET", `/v3/lab_tests/${test.id}/markers`);
|
|
192
|
-
if (!markersResponse.ok)
|
|
193
|
-
return expectedFromMarkers(test);
|
|
194
|
-
const markersPayload = asRecord(await readJson(markersResponse));
|
|
195
|
-
const markers = markersPayload?.markers;
|
|
196
|
-
if (!Array.isArray(markers) || markers.length === 0)
|
|
197
|
-
return expectedFromMarkers(test);
|
|
198
|
-
const expected = [];
|
|
199
|
-
const cleaned = [];
|
|
200
|
-
for (const entry of markers) {
|
|
201
|
-
const record = asRecord(entry);
|
|
202
|
-
if (!record)
|
|
203
|
-
continue;
|
|
204
|
-
const expectedField = record.expected_results;
|
|
205
|
-
if (Array.isArray(expectedField) && expectedField.length > 0 && expected.length === 0) {
|
|
206
|
-
for (const item of expectedField) {
|
|
207
|
-
const expectedRecord = asRecord(item);
|
|
208
|
-
if (expectedRecord)
|
|
209
|
-
expected.push(clone(expectedRecord));
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
const { expected_results: _ignored, ...rest } = record;
|
|
213
|
-
cleaned.push(rest);
|
|
214
|
-
}
|
|
215
|
-
test.markers = cleaned;
|
|
216
|
-
return expected.length > 0 ? expected : expectedFromMarkers(test);
|
|
217
|
-
};
|
|
218
|
-
export const ensureLabTests = async (state, source, ids) => {
|
|
219
|
-
let added = 0;
|
|
220
|
-
for (const id of ids) {
|
|
221
|
-
if (!id)
|
|
222
|
-
continue;
|
|
223
|
-
const response = await request(source, "GET", `/v3/lab_tests/${id}`);
|
|
224
|
-
if (!response.ok)
|
|
225
|
-
continue;
|
|
226
|
-
const test = mapLabTest(await readJson(response));
|
|
227
|
-
if (!test)
|
|
228
|
-
continue;
|
|
229
|
-
const expected = await expectedFromMarkersResponse(source, test);
|
|
230
|
-
const existed = Boolean(state.labTestById(id));
|
|
231
|
-
state.upsertLabTest(test, expected);
|
|
232
|
-
if (!existed)
|
|
233
|
-
added += 1;
|
|
234
|
-
}
|
|
235
|
-
return added;
|
|
236
|
-
};
|
|
237
|
-
/**
|
|
238
|
-
* Pull any warmup-registered orders that user-list seeding missed (e.g. orders whose
|
|
239
|
-
* user was deleted during warmup and therefore no longer appears in `/v2/user`).
|
|
240
|
-
*/
|
|
241
|
-
export const ensureOrders = async (state, source, ids) => {
|
|
242
|
-
let added = 0;
|
|
243
|
-
for (const id of ids) {
|
|
244
|
-
if (!id)
|
|
245
|
-
continue;
|
|
246
|
-
const orderResponse = await request(source, "GET", `/v3/order/${id}`);
|
|
247
|
-
if (!orderResponse.ok)
|
|
248
|
-
continue;
|
|
249
|
-
const order = mapOrder(await readJson(orderResponse));
|
|
250
|
-
if (!order)
|
|
251
|
-
continue;
|
|
252
|
-
if (!state.users.has(order.user_id) && !state.deletedUsers.has(order.user_id)) {
|
|
253
|
-
const userResponse = await request(source, "GET", `/v2/user/${order.user_id}`);
|
|
254
|
-
if (userResponse.ok) {
|
|
255
|
-
const user = mapUser(await readJson(userResponse));
|
|
256
|
-
if (user)
|
|
257
|
-
state.insertUser(user);
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
state.deletedUsers.insert(order.user_id, { user_id: order.user_id });
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
const existed = Boolean(state.orders.get(id));
|
|
264
|
-
if (existed)
|
|
265
|
-
state.orders.update(id, order);
|
|
266
|
-
else
|
|
267
|
-
state.insertOrder(order);
|
|
268
|
-
if (order.lab_test?.id)
|
|
269
|
-
state.upsertLabTest(order.lab_test);
|
|
270
|
-
await ensureUserInfoForOrder(state, source, order);
|
|
271
|
-
if (!existed)
|
|
272
|
-
added += 1;
|
|
273
|
-
}
|
|
274
|
-
return added;
|
|
275
|
-
};
|
|
276
|
-
export const seedFrom = async (state, source, observations) => {
|
|
277
|
-
let cacheEntries = 0;
|
|
278
|
-
if (observations?.getCache) {
|
|
279
|
-
state.installGetCache(observations.getCache);
|
|
280
|
-
cacheEntries = observations.getCache.size;
|
|
281
|
-
const nowMs = Date.now();
|
|
282
|
-
for (const [key, entry] of observations.getCache) {
|
|
283
|
-
if (!key.toLowerCase().includes("availability"))
|
|
284
|
-
continue;
|
|
285
|
-
const zipMatch = key.match(/"zip_code":"(\d{5})"/);
|
|
286
|
-
const modality = key.toLowerCase().includes("psc")
|
|
287
|
-
? "patient_service_center"
|
|
288
|
-
: key.toLowerCase().includes("phlebotomy")
|
|
289
|
-
? "phlebotomy"
|
|
290
|
-
: undefined;
|
|
291
|
-
const zip = zipMatch?.[1] ?? "85004";
|
|
292
|
-
state.hydrateBookingKeysFromAvailability(entry.body, nowMs, zip, modality);
|
|
293
|
-
// Vital echoes the availability request address on book/reschedule. Align the
|
|
294
|
-
// freshly hydrated oracle-key records with the request address embedded in the
|
|
295
|
-
// observation cache key so book/reschedule render the same address as the
|
|
296
|
-
// oracle instead of the hydrate placeholder.
|
|
297
|
-
const requestBody = parseAvailabilityRequestBody(key);
|
|
298
|
-
if (requestBody)
|
|
299
|
-
alignBookingKeyAddresses(state, entry.body, requestBody, zip, modality);
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
const labTests = [];
|
|
303
|
-
let cursor = null;
|
|
304
|
-
for (;;) {
|
|
305
|
-
const path = cursor === null ? "/v3/lab_test" : `/v3/lab_test?next_cursor=${encodeURIComponent(cursor)}`;
|
|
306
|
-
const response = await request(source, "GET", path);
|
|
307
|
-
if (!response.ok)
|
|
308
|
-
break;
|
|
309
|
-
const payload = asRecord(await readJson(response));
|
|
310
|
-
const data = payload?.data;
|
|
311
|
-
if (Array.isArray(data)) {
|
|
312
|
-
for (const entry of data) {
|
|
313
|
-
const test = mapLabTest(entry);
|
|
314
|
-
if (test)
|
|
315
|
-
labTests.push(test);
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
cursor = asString(payload?.next_cursor) ?? null;
|
|
319
|
-
if (cursor === null)
|
|
320
|
-
break;
|
|
321
|
-
}
|
|
322
|
-
const labsResponse = await request(source, "GET", "/v3/lab_tests/labs");
|
|
323
|
-
const labsPayload = labsResponse.ok ? await readJson(labsResponse) : [];
|
|
324
|
-
const labs = Array.isArray(labsPayload)
|
|
325
|
-
? labsPayload.filter((entry) => typeof entry === "object" && entry !== null && !Array.isArray(entry))
|
|
326
|
-
: [];
|
|
327
|
-
const expectedResults = {};
|
|
328
|
-
for (const test of labTests) {
|
|
329
|
-
expectedResults[test.id] = await expectedFromMarkersResponse(source, test);
|
|
330
|
-
}
|
|
331
|
-
if (labTests.length > 0 || labs.length > 0) {
|
|
332
|
-
const currentTests = state.listLabTests();
|
|
333
|
-
const currentLabs = state.listLabs();
|
|
334
|
-
const currentExpected = Object.fromEntries(currentTests.map((test) => [test.id, state.expectedResultsFor(test.id)]));
|
|
335
|
-
state.replaceCatalog({
|
|
336
|
-
labTests: labTests.length > 0 ? labTests : currentTests,
|
|
337
|
-
labs: labs.length > 0 ? labs : currentLabs,
|
|
338
|
-
expectedResults: Object.keys(expectedResults).length > 0 ? expectedResults : currentExpected,
|
|
339
|
-
});
|
|
340
|
-
}
|
|
341
|
-
let users = 0;
|
|
342
|
-
let orders = 0;
|
|
343
|
-
let appointments = 0;
|
|
344
|
-
const pendingOrders = [];
|
|
345
|
-
let offset = 0;
|
|
346
|
-
const limit = 100;
|
|
347
|
-
for (;;) {
|
|
348
|
-
const listResponse = await request(source, "GET", `/v2/user?offset=${offset}&limit=${limit}`);
|
|
349
|
-
if (!listResponse.ok)
|
|
350
|
-
break;
|
|
351
|
-
const listPayload = asRecord(await readJson(listResponse));
|
|
352
|
-
const listed = Array.isArray(listPayload?.users) ? listPayload.users : [];
|
|
353
|
-
if (listed.length === 0)
|
|
354
|
-
break;
|
|
355
|
-
for (const entry of listed) {
|
|
356
|
-
const listedUser = mapUser(entry);
|
|
357
|
-
if (!listedUser)
|
|
358
|
-
continue;
|
|
359
|
-
const detailResponse = await request(source, "GET", `/v2/user/${listedUser.user_id}`);
|
|
360
|
-
const user = detailResponse.ok
|
|
361
|
-
? (mapUser(await readJson(detailResponse)) ?? listedUser)
|
|
362
|
-
: listedUser;
|
|
363
|
-
state.insertUser(user);
|
|
364
|
-
users += 1;
|
|
365
|
-
const infoResponse = await request(source, "GET", `/v2/user/${user.user_id}/info/latest`);
|
|
366
|
-
if (infoResponse.ok) {
|
|
367
|
-
const info = asRecord(await readJson(infoResponse));
|
|
368
|
-
if (info)
|
|
369
|
-
state.userInfo.insert(user.user_id, info);
|
|
370
|
-
}
|
|
371
|
-
let page = 1;
|
|
372
|
-
for (;;) {
|
|
373
|
-
const ordersResponse = await request(source, "GET", `/v3/orders?user_id=${encodeURIComponent(user.user_id)}&page=${page}&size=100`);
|
|
374
|
-
if (!ordersResponse.ok)
|
|
375
|
-
break;
|
|
376
|
-
const ordersPayload = asRecord(await readJson(ordersResponse));
|
|
377
|
-
const orderEntries = Array.isArray(ordersPayload?.orders)
|
|
378
|
-
? ordersPayload.orders
|
|
379
|
-
: Array.isArray(ordersPayload?.data)
|
|
380
|
-
? ordersPayload.data
|
|
381
|
-
: [];
|
|
382
|
-
if (orderEntries.length === 0)
|
|
383
|
-
break;
|
|
384
|
-
for (const orderEntry of orderEntries) {
|
|
385
|
-
const summary = asRecord(orderEntry);
|
|
386
|
-
const orderId = asString(summary?.id) ?? asString(summary?.order_id);
|
|
387
|
-
if (!orderId)
|
|
388
|
-
continue;
|
|
389
|
-
const orderResponse = await request(source, "GET", `/v3/order/${orderId}`);
|
|
390
|
-
if (!orderResponse.ok)
|
|
391
|
-
continue;
|
|
392
|
-
const order = mapOrder(await readJson(orderResponse));
|
|
393
|
-
if (!order)
|
|
394
|
-
continue;
|
|
395
|
-
const orderAppointments = [];
|
|
396
|
-
for (const modality of ["phlebotomy", "psc"]) {
|
|
397
|
-
const path = modality === "phlebotomy"
|
|
398
|
-
? `/v3/order/${order.id}/phlebotomy/appointment`
|
|
399
|
-
: `/v3/order/${order.id}/psc/appointment`;
|
|
400
|
-
const appointmentResponse = await request(source, "GET", path);
|
|
401
|
-
if (!appointmentResponse.ok)
|
|
402
|
-
continue;
|
|
403
|
-
const appointment = mapAppointment(await readJson(appointmentResponse), order.id, order.user_id);
|
|
404
|
-
if (!appointment)
|
|
405
|
-
continue;
|
|
406
|
-
orderAppointments.push(appointment);
|
|
407
|
-
}
|
|
408
|
-
pendingOrders.push({ order, appointments: orderAppointments });
|
|
409
|
-
}
|
|
410
|
-
const total = typeof ordersPayload?.total === "number" ? ordersPayload.total : undefined;
|
|
411
|
-
if (total !== undefined && page * 100 >= total)
|
|
412
|
-
break;
|
|
413
|
-
if (orderEntries.length < 100)
|
|
414
|
-
break;
|
|
415
|
-
page += 1;
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
offset += listed.length;
|
|
419
|
-
if (listed.length < limit)
|
|
420
|
-
break;
|
|
421
|
-
}
|
|
422
|
-
// Team-wide order pass: /v2/user can be empty while orphan orders remain
|
|
423
|
-
// (users deleted, orders retained). List payloads are full ClientFacingOrder
|
|
424
|
-
// objects, so we can seed without per-id GETs.
|
|
425
|
-
{
|
|
426
|
-
let page = 1;
|
|
427
|
-
for (;;) {
|
|
428
|
-
const ordersResponse = await request(source, "GET", `/v3/orders?page=${page}&size=100`);
|
|
429
|
-
if (!ordersResponse.ok)
|
|
430
|
-
break;
|
|
431
|
-
const ordersPayload = asRecord(await readJson(ordersResponse));
|
|
432
|
-
const orderEntries = Array.isArray(ordersPayload?.orders)
|
|
433
|
-
? ordersPayload.orders
|
|
434
|
-
: Array.isArray(ordersPayload?.data)
|
|
435
|
-
? ordersPayload.data
|
|
436
|
-
: [];
|
|
437
|
-
if (orderEntries.length === 0)
|
|
438
|
-
break;
|
|
439
|
-
let listPosition = (page - 1) * 100;
|
|
440
|
-
for (const orderEntry of orderEntries) {
|
|
441
|
-
const order = mapOrder(orderEntry);
|
|
442
|
-
if (!order)
|
|
443
|
-
continue;
|
|
444
|
-
// Do not resurrect users that are absent from /v2/user — orphan orders
|
|
445
|
-
// keep their user_id but the team user list must match sandbox membership.
|
|
446
|
-
if (!state.users.has(order.user_id) && !state.deletedUsers.has(order.user_id)) {
|
|
447
|
-
state.deletedUsers.insert(order.user_id, { user_id: order.user_id });
|
|
448
|
-
}
|
|
449
|
-
listPosition += 1;
|
|
450
|
-
const existing = pendingOrders.find((pending) => pending.order.id === order.id);
|
|
451
|
-
if (existing) {
|
|
452
|
-
// Team-wide list order is the oracle's own tie order — restamp even for
|
|
453
|
-
// orders first discovered through the per-user pass.
|
|
454
|
-
existing.listPosition = listPosition;
|
|
455
|
-
continue;
|
|
456
|
-
}
|
|
457
|
-
pendingOrders.push({ order, appointments: [], listPosition });
|
|
458
|
-
}
|
|
459
|
-
const total = typeof ordersPayload?.total === "number" ? ordersPayload.total : undefined;
|
|
460
|
-
if (total !== undefined && page * 100 >= total)
|
|
461
|
-
break;
|
|
462
|
-
if (orderEntries.length < 100)
|
|
463
|
-
break;
|
|
464
|
-
page += 1;
|
|
465
|
-
}
|
|
466
|
-
}
|
|
467
|
-
// Insert oldest-first so collection seq matches the oracle's list order: primary key
|
|
468
|
-
// is updated_at asc, ties follow the oracle's newest-first list position (reversed),
|
|
469
|
-
// because the sandbox orders same-instant rows by creation order there too.
|
|
470
|
-
pendingOrders.sort((left, right) => {
|
|
471
|
-
const leftAt = Date.parse(String(left.order.updated_at ?? left.order.created_at ?? "")) || 0;
|
|
472
|
-
const rightAt = Date.parse(String(right.order.updated_at ?? right.order.created_at ?? "")) || 0;
|
|
473
|
-
if (leftAt !== rightAt)
|
|
474
|
-
return leftAt - rightAt;
|
|
475
|
-
if (left.listPosition !== undefined && right.listPosition !== undefined) {
|
|
476
|
-
return right.listPosition - left.listPosition;
|
|
477
|
-
}
|
|
478
|
-
// Orders discovered only via per-user detail fetches keep id order as a stable fallback.
|
|
479
|
-
return left.order.id.localeCompare(right.order.id);
|
|
480
|
-
});
|
|
481
|
-
for (const pending of pendingOrders) {
|
|
482
|
-
const labTest = pending.order.lab_test;
|
|
483
|
-
if (labTest?.id && (labTest.markers?.length ?? 0) === 0) {
|
|
484
|
-
const expected = await expectedFromMarkersResponse(source, labTest);
|
|
485
|
-
pending.order.lab_test = labTest;
|
|
486
|
-
if (state.orders.get(pending.order.id)) {
|
|
487
|
-
state.orders.update(pending.order.id, pending.order);
|
|
488
|
-
}
|
|
489
|
-
state.upsertLabTest(labTest, expected);
|
|
490
|
-
}
|
|
491
|
-
if (state.orders.get(pending.order.id)) {
|
|
492
|
-
state.orders.update(pending.order.id, pending.order);
|
|
493
|
-
if (pending.order.lab_test?.id)
|
|
494
|
-
state.upsertLabTest(pending.order.lab_test);
|
|
495
|
-
continue;
|
|
496
|
-
}
|
|
497
|
-
state.insertOrder(pending.order);
|
|
498
|
-
if (pending.order.lab_test?.id)
|
|
499
|
-
state.upsertLabTest(pending.order.lab_test);
|
|
500
|
-
await ensureUserInfoForOrder(state, source, pending.order);
|
|
501
|
-
orders += 1;
|
|
502
|
-
for (const appointment of pending.appointments) {
|
|
503
|
-
if (state.appointments.get(appointment.id))
|
|
504
|
-
continue;
|
|
505
|
-
state.insertAppointment(appointment);
|
|
506
|
-
appointments += 1;
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
// Refresh panels that still lack markers so create_order matches Vital.
|
|
510
|
-
await ensureLabTests(state, source, state
|
|
511
|
-
.listLabTests()
|
|
512
|
-
.filter((test) => (test.markers?.length ?? 0) === 0)
|
|
513
|
-
.map((test) => test.id));
|
|
514
|
-
return {
|
|
515
|
-
users,
|
|
516
|
-
orders,
|
|
517
|
-
appointments,
|
|
518
|
-
catalogTests: state.listLabTests().length,
|
|
519
|
-
labs: state.listLabs().length,
|
|
520
|
-
cacheEntries,
|
|
521
|
-
};
|
|
522
|
-
};
|
|
523
|
-
//# sourceMappingURL=seed-from.js.map
|
package/dist/seed-from.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seed-from.js","sourceRoot":"","sources":["../src/seed-from.ts"],"names":[],"mappings":"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"}
|
package/dist/seeds.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Seeds that have previously reproduced a real/mock divergence in the Junction parity suite.
|
|
3
|
-
*
|
|
4
|
-
* Every seed here is replayed on each live parity run so that past bug fixes stay fixed. Add a
|
|
5
|
-
* new seed whenever a parity run fails — the seed is printed on the `FC_SEED=<seed> to replay`
|
|
6
|
-
* line of the failure output.
|
|
7
|
-
*/
|
|
8
|
-
export declare const PARITY_SEEDS: readonly number[];
|
|
9
|
-
//# sourceMappingURL=seeds.d.ts.map
|
package/dist/seeds.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../src/seeds.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAuC,CAAA"}
|
package/dist/seeds.js
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Seeds that have previously reproduced a real/mock divergence in the Junction parity suite.
|
|
3
|
-
*
|
|
4
|
-
* Every seed here is replayed on each live parity run so that past bug fixes stay fixed. Add a
|
|
5
|
-
* new seed whenever a parity run fails — the seed is printed on the `FC_SEED=<seed> to replay`
|
|
6
|
-
* line of the failure output.
|
|
7
|
-
*/
|
|
8
|
-
export const PARITY_SEEDS = [2058813869, 2061032686, 10416389];
|
|
9
|
-
//# sourceMappingURL=seeds.js.map
|
package/dist/seeds.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../src/seeds.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAsB,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAA"}
|