@metriport/api-sdk 6.0.1-alpha.1
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/.eslintignore +4 -0
- package/.eslintrc.js +7 -0
- package/LICENSE +21 -0
- package/README.md +67 -0
- package/dist/devices/client/metriport.d.ts +155 -0
- package/dist/devices/client/metriport.d.ts.map +1 -0
- package/dist/devices/client/metriport.js +225 -0
- package/dist/devices/client/metriport.js.map +1 -0
- package/dist/devices/client/models/get-connect-token-response.d.ts +4 -0
- package/dist/devices/client/models/get-connect-token-response.d.ts.map +1 -0
- package/dist/devices/client/models/get-connect-token-response.js +3 -0
- package/dist/devices/client/models/get-connect-token-response.js.map +1 -0
- package/dist/devices/client/models/get-connected-users-response.d.ts +5 -0
- package/dist/devices/client/models/get-connected-users-response.d.ts.map +1 -0
- package/dist/devices/client/models/get-connected-users-response.js +3 -0
- package/dist/devices/client/models/get-connected-users-response.js.map +1 -0
- package/dist/devices/client/models/get-metriport-user-id-response.d.ts +4 -0
- package/dist/devices/client/models/get-metriport-user-id-response.d.ts.map +1 -0
- package/dist/devices/client/models/get-metriport-user-id-response.js +3 -0
- package/dist/devices/client/models/get-metriport-user-id-response.js.map +1 -0
- package/dist/devices/client/models/settings-response.d.ts +6 -0
- package/dist/devices/client/models/settings-response.d.ts.map +1 -0
- package/dist/devices/client/models/settings-response.js +3 -0
- package/dist/devices/client/models/settings-response.js.map +1 -0
- package/dist/devices/client/models/webhook-status-response.d.ts +7 -0
- package/dist/devices/client/models/webhook-status-response.d.ts.map +1 -0
- package/dist/devices/client/models/webhook-status-response.js +3 -0
- package/dist/devices/client/models/webhook-status-response.js.map +1 -0
- package/dist/devices/client/util/date-util.d.ts +2 -0
- package/dist/devices/client/util/date-util.d.ts.map +1 -0
- package/dist/devices/client/util/date-util.js +17 -0
- package/dist/devices/client/util/date-util.js.map +1 -0
- package/dist/devices/models/activity.d.ts +22 -0
- package/dist/devices/models/activity.d.ts.map +1 -0
- package/dist/devices/models/activity.js +3 -0
- package/dist/devices/models/activity.js.map +1 -0
- package/dist/devices/models/biometrics.d.ts +16 -0
- package/dist/devices/models/biometrics.d.ts.map +1 -0
- package/dist/devices/models/biometrics.js +3 -0
- package/dist/devices/models/biometrics.js.map +1 -0
- package/dist/devices/models/body.d.ts +13 -0
- package/dist/devices/models/body.d.ts.map +1 -0
- package/dist/devices/models/body.js +3 -0
- package/dist/devices/models/body.js.map +1 -0
- package/dist/devices/models/common/activity-durations.d.ts +19 -0
- package/dist/devices/models/common/activity-durations.d.ts.map +1 -0
- package/dist/devices/models/common/activity-durations.js +3 -0
- package/dist/devices/models/common/activity-durations.js.map +1 -0
- package/dist/devices/models/common/activity-log.d.ts +32 -0
- package/dist/devices/models/common/activity-log.d.ts.map +1 -0
- package/dist/devices/models/common/activity-log.js +3 -0
- package/dist/devices/models/common/activity-log.js.map +1 -0
- package/dist/devices/models/common/activity-movement.d.ts +16 -0
- package/dist/devices/models/common/activity-movement.d.ts.map +1 -0
- package/dist/devices/models/common/activity-movement.js +3 -0
- package/dist/devices/models/common/activity-movement.js.map +1 -0
- package/dist/devices/models/common/aminos.d.ts +23 -0
- package/dist/devices/models/common/aminos.d.ts.map +1 -0
- package/dist/devices/models/common/aminos.js +3 -0
- package/dist/devices/models/common/aminos.js.map +1 -0
- package/dist/devices/models/common/blood-glucose.d.ts +6 -0
- package/dist/devices/models/common/blood-glucose.d.ts.map +1 -0
- package/dist/devices/models/common/blood-glucose.js +3 -0
- package/dist/devices/models/common/blood-glucose.js.map +1 -0
- package/dist/devices/models/common/blood-pressure.d.ts +10 -0
- package/dist/devices/models/common/blood-pressure.d.ts.map +1 -0
- package/dist/devices/models/common/blood-pressure.js +3 -0
- package/dist/devices/models/common/blood-pressure.js.map +1 -0
- package/dist/devices/models/common/connected-user-info.d.ts +6 -0
- package/dist/devices/models/common/connected-user-info.d.ts.map +1 -0
- package/dist/devices/models/common/connected-user-info.js +3 -0
- package/dist/devices/models/common/connected-user-info.js.map +1 -0
- package/dist/devices/models/common/energy-expenditure.d.ts +7 -0
- package/dist/devices/models/common/energy-expenditure.d.ts.map +1 -0
- package/dist/devices/models/common/energy-expenditure.js +3 -0
- package/dist/devices/models/common/energy-expenditure.js.map +1 -0
- package/dist/devices/models/common/food.d.ts +15 -0
- package/dist/devices/models/common/food.d.ts.map +1 -0
- package/dist/devices/models/common/food.js +3 -0
- package/dist/devices/models/common/food.js.map +1 -0
- package/dist/devices/models/common/heart-rate-variability.d.ts +12 -0
- package/dist/devices/models/common/heart-rate-variability.d.ts.map +1 -0
- package/dist/devices/models/common/heart-rate-variability.js +3 -0
- package/dist/devices/models/common/heart-rate-variability.js.map +1 -0
- package/dist/devices/models/common/heart-rate.d.ts +9 -0
- package/dist/devices/models/common/heart-rate.d.ts.map +1 -0
- package/dist/devices/models/common/heart-rate.js +3 -0
- package/dist/devices/models/common/heart-rate.js.map +1 -0
- package/dist/devices/models/common/lat-lon.d.ts +5 -0
- package/dist/devices/models/common/lat-lon.d.ts.map +1 -0
- package/dist/devices/models/common/lat-lon.js +3 -0
- package/dist/devices/models/common/lat-lon.js.map +1 -0
- package/dist/devices/models/common/macros.d.ts +14 -0
- package/dist/devices/models/common/macros.d.ts.map +1 -0
- package/dist/devices/models/common/macros.js +3 -0
- package/dist/devices/models/common/macros.js.map +1 -0
- package/dist/devices/models/common/metadata.d.ts +10 -0
- package/dist/devices/models/common/metadata.d.ts.map +1 -0
- package/dist/devices/models/common/metadata.js +3 -0
- package/dist/devices/models/common/metadata.js.map +1 -0
- package/dist/devices/models/common/micros.d.ts +28 -0
- package/dist/devices/models/common/micros.d.ts.map +1 -0
- package/dist/devices/models/common/micros.js +3 -0
- package/dist/devices/models/common/micros.js.map +1 -0
- package/dist/devices/models/common/provider-source.d.ts +12 -0
- package/dist/devices/models/common/provider-source.d.ts.map +1 -0
- package/dist/devices/models/common/provider-source.js +16 -0
- package/dist/devices/models/common/provider-source.js.map +1 -0
- package/dist/devices/models/common/respiration.d.ts +15 -0
- package/dist/devices/models/common/respiration.d.ts.map +1 -0
- package/dist/devices/models/common/respiration.js +3 -0
- package/dist/devices/models/common/respiration.js.map +1 -0
- package/dist/devices/models/common/sample.d.ts +7 -0
- package/dist/devices/models/common/sample.d.ts.map +1 -0
- package/dist/devices/models/common/sample.js +3 -0
- package/dist/devices/models/common/sample.js.map +1 -0
- package/dist/devices/models/common/sex.d.ts +2 -0
- package/dist/devices/models/common/sex.d.ts.map +1 -0
- package/dist/devices/models/common/sex.js +3 -0
- package/dist/devices/models/common/sex.js.map +1 -0
- package/dist/devices/models/common/source-info.d.ts +8 -0
- package/dist/devices/models/common/source-info.d.ts.map +1 -0
- package/dist/devices/models/common/source-info.js +3 -0
- package/dist/devices/models/common/source-info.js.map +1 -0
- package/dist/devices/models/common/source-type.d.ts +5 -0
- package/dist/devices/models/common/source-type.d.ts.map +1 -0
- package/dist/devices/models/common/source-type.js +9 -0
- package/dist/devices/models/common/source-type.js.map +1 -0
- package/dist/devices/models/common/temperature.d.ts +13 -0
- package/dist/devices/models/common/temperature.d.ts.map +1 -0
- package/dist/devices/models/common/temperature.js +3 -0
- package/dist/devices/models/common/temperature.js.map +1 -0
- package/dist/devices/models/metriport-data.d.ts +5 -0
- package/dist/devices/models/metriport-data.d.ts.map +1 -0
- package/dist/devices/models/metriport-data.js +3 -0
- package/dist/devices/models/metriport-data.js.map +1 -0
- package/dist/devices/models/nutrition.d.ts +14 -0
- package/dist/devices/models/nutrition.d.ts.map +1 -0
- package/dist/devices/models/nutrition.js +3 -0
- package/dist/devices/models/nutrition.js.map +1 -0
- package/dist/devices/models/sleep.d.ts +28 -0
- package/dist/devices/models/sleep.d.ts.map +1 -0
- package/dist/devices/models/sleep.js +3 -0
- package/dist/devices/models/sleep.js.map +1 -0
- package/dist/devices/models/user.d.ts +14 -0
- package/dist/devices/models/user.d.ts.map +1 -0
- package/dist/devices/models/user.js +3 -0
- package/dist/devices/models/user.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/medical/client/metriport.d.ts +152 -0
- package/dist/medical/client/metriport.d.ts.map +1 -0
- package/dist/medical/client/metriport.js +290 -0
- package/dist/medical/client/metriport.js.map +1 -0
- package/dist/medical/models/common/address.d.ts +25 -0
- package/dist/medical/models/common/address.d.ts.map +1 -0
- package/dist/medical/models/common/address.js +21 -0
- package/dist/medical/models/common/address.js.map +1 -0
- package/dist/medical/models/common/base-update.d.ts +16 -0
- package/dist/medical/models/common/base-update.d.ts.map +1 -0
- package/dist/medical/models/common/base-update.js +13 -0
- package/dist/medical/models/common/base-update.js.map +1 -0
- package/dist/medical/models/common/medical-data-source.d.ts +4 -0
- package/dist/medical/models/common/medical-data-source.d.ts.map +1 -0
- package/dist/medical/models/common/medical-data-source.js +8 -0
- package/dist/medical/models/common/medical-data-source.js.map +1 -0
- package/dist/medical/models/common/us-data.d.ts +56 -0
- package/dist/medical/models/common/us-data.d.ts.map +1 -0
- package/dist/medical/models/common/us-data.js +60 -0
- package/dist/medical/models/common/us-data.js.map +1 -0
- package/dist/medical/models/demographics.d.ts +317 -0
- package/dist/medical/models/demographics.d.ts.map +1 -0
- package/dist/medical/models/demographics.js +50 -0
- package/dist/medical/models/demographics.js.map +1 -0
- package/dist/medical/models/document.d.ts +271 -0
- package/dist/medical/models/document.d.ts.map +1 -0
- package/dist/medical/models/document.js +41 -0
- package/dist/medical/models/document.js.map +1 -0
- package/dist/medical/models/facility.d.ts +214 -0
- package/dist/medical/models/facility.d.ts.map +1 -0
- package/dist/medical/models/facility.js +22 -0
- package/dist/medical/models/facility.js.map +1 -0
- package/dist/medical/models/organization.d.ts +115 -0
- package/dist/medical/models/organization.d.ts.map +1 -0
- package/dist/medical/models/organization.js +23 -0
- package/dist/medical/models/organization.js.map +1 -0
- package/dist/medical/models/patient.d.ts +1097 -0
- package/dist/medical/models/patient.d.ts.map +1 -0
- package/dist/medical/models/patient.js +15 -0
- package/dist/medical/models/patient.js.map +1 -0
- package/dist/shared.d.ts +14 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +28 -0
- package/dist/shared.js.map +1 -0
- package/package.json +67 -0
- package/src/devices/client/metriport.ts +261 -0
- package/src/devices/client/models/get-connect-token-response.ts +3 -0
- package/src/devices/client/models/get-connected-users-response.ts +5 -0
- package/src/devices/client/models/get-metriport-user-id-response.ts +3 -0
- package/src/devices/client/models/settings-response.ts +5 -0
- package/src/devices/client/models/webhook-status-response.ts +6 -0
- package/src/devices/client/util/date-util.ts +17 -0
- package/src/devices/models/activity.ts +22 -0
- package/src/devices/models/biometrics.ts +17 -0
- package/src/devices/models/body.ts +12 -0
- package/src/devices/models/common/activity-durations.ts +20 -0
- package/src/devices/models/common/activity-log.ts +33 -0
- package/src/devices/models/common/activity-movement.ts +15 -0
- package/src/devices/models/common/aminos.ts +22 -0
- package/src/devices/models/common/blood-glucose.ts +6 -0
- package/src/devices/models/common/blood-pressure.ts +10 -0
- package/src/devices/models/common/connected-user-info.ts +5 -0
- package/src/devices/models/common/energy-expenditure.ts +6 -0
- package/src/devices/models/common/food.ts +15 -0
- package/src/devices/models/common/heart-rate-variability.ts +12 -0
- package/src/devices/models/common/heart-rate.ts +9 -0
- package/src/devices/models/common/lat-lon.ts +4 -0
- package/src/devices/models/common/macros.ts +13 -0
- package/src/devices/models/common/metadata.ts +10 -0
- package/src/devices/models/common/micros.ts +27 -0
- package/src/devices/models/common/provider-source.ts +11 -0
- package/src/devices/models/common/respiration.ts +16 -0
- package/src/devices/models/common/sample.ts +7 -0
- package/src/devices/models/common/sex.ts +1 -0
- package/src/devices/models/common/source-info.ts +8 -0
- package/src/devices/models/common/source-type.ts +4 -0
- package/src/devices/models/common/temperature.ts +13 -0
- package/src/devices/models/metriport-data.ts +5 -0
- package/src/devices/models/nutrition.ts +10 -0
- package/src/devices/models/sleep.ts +29 -0
- package/src/devices/models/user.ts +14 -0
- package/src/index.ts +60 -0
- package/src/medical/client/metriport.ts +328 -0
- package/src/medical/models/common/address.ts +20 -0
- package/src/medical/models/common/base-update.ts +11 -0
- package/src/medical/models/common/medical-data-source.ts +3 -0
- package/src/medical/models/common/us-data.ts +56 -0
- package/src/medical/models/demographics.ts +63 -0
- package/src/medical/models/document.ts +49 -0
- package/src/medical/models/facility.ts +23 -0
- package/src/medical/models/organization.ts +24 -0
- package/src/medical/models/patient.ts +18 -0
- package/src/shared.ts +25 -0
- package/tsconfig.json +24 -0
- package/tsconfig.ref.json +7 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export enum USState {
|
|
4
|
+
AL = "AL",
|
|
5
|
+
AK = "AK",
|
|
6
|
+
AZ = "AZ",
|
|
7
|
+
AR = "AR",
|
|
8
|
+
CA = "CA",
|
|
9
|
+
CO = "CO",
|
|
10
|
+
CT = "CT",
|
|
11
|
+
DE = "DE",
|
|
12
|
+
DC = "DC",
|
|
13
|
+
FL = "FL",
|
|
14
|
+
GA = "GA",
|
|
15
|
+
HI = "HI",
|
|
16
|
+
ID = "ID",
|
|
17
|
+
IL = "IL",
|
|
18
|
+
IN = "IN",
|
|
19
|
+
IA = "IA",
|
|
20
|
+
KS = "KS",
|
|
21
|
+
KY = "KY",
|
|
22
|
+
LA = "LA",
|
|
23
|
+
ME = "ME",
|
|
24
|
+
MD = "MD",
|
|
25
|
+
MA = "MA",
|
|
26
|
+
MI = "MI",
|
|
27
|
+
MN = "MN",
|
|
28
|
+
MS = "MS",
|
|
29
|
+
MO = "MO",
|
|
30
|
+
MT = "MT",
|
|
31
|
+
NE = "NE",
|
|
32
|
+
NV = "NV",
|
|
33
|
+
NH = "NH",
|
|
34
|
+
NJ = "NJ",
|
|
35
|
+
NM = "NM",
|
|
36
|
+
NY = "NY",
|
|
37
|
+
NC = "NC",
|
|
38
|
+
ND = "ND",
|
|
39
|
+
OH = "OH",
|
|
40
|
+
OK = "OK",
|
|
41
|
+
OR = "OR",
|
|
42
|
+
PA = "PA",
|
|
43
|
+
RI = "RI",
|
|
44
|
+
SC = "SC",
|
|
45
|
+
SD = "SD",
|
|
46
|
+
TN = "TN",
|
|
47
|
+
TX = "TX",
|
|
48
|
+
UT = "UT",
|
|
49
|
+
VT = "VT",
|
|
50
|
+
VA = "VA",
|
|
51
|
+
WA = "WA",
|
|
52
|
+
WV = "WV",
|
|
53
|
+
WI = "WI",
|
|
54
|
+
WY = "WY",
|
|
55
|
+
}
|
|
56
|
+
export const usStateSchema = z.nativeEnum(USState);
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { addressSchema } from "./common/address";
|
|
3
|
+
import { usStateSchema } from "./common/us-data";
|
|
4
|
+
import {
|
|
5
|
+
defaultDateString,
|
|
6
|
+
defaultNameString,
|
|
7
|
+
defaultOptionalString,
|
|
8
|
+
stripNonNumericChars,
|
|
9
|
+
} from "../../shared";
|
|
10
|
+
|
|
11
|
+
const basePersonalIdentifierSchema = z.object({
|
|
12
|
+
value: z.string(),
|
|
13
|
+
period: z
|
|
14
|
+
.object({
|
|
15
|
+
start: z.string(),
|
|
16
|
+
end: z.string().optional(),
|
|
17
|
+
})
|
|
18
|
+
.or(
|
|
19
|
+
z.object({
|
|
20
|
+
start: z.string().optional(),
|
|
21
|
+
end: z.string(),
|
|
22
|
+
})
|
|
23
|
+
)
|
|
24
|
+
.optional(),
|
|
25
|
+
assigner: z.string().optional(),
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
export const driverLicenseIdentifierSchema = z.object({
|
|
29
|
+
type: z.literal("driversLicense"),
|
|
30
|
+
state: usStateSchema,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export const personalIdentifierSchema = basePersonalIdentifierSchema.merge(
|
|
34
|
+
driverLicenseIdentifierSchema
|
|
35
|
+
);
|
|
36
|
+
export type PersonalIdentifier = z.infer<typeof personalIdentifierSchema>;
|
|
37
|
+
|
|
38
|
+
export const genderAtBirthSchema = z.enum(["F", "M"]);
|
|
39
|
+
|
|
40
|
+
const phoneLength = 10;
|
|
41
|
+
export const contactSchema = z
|
|
42
|
+
.object({
|
|
43
|
+
phone: z.coerce
|
|
44
|
+
.string()
|
|
45
|
+
.transform(phone => stripNonNumericChars(phone))
|
|
46
|
+
.refine(phone => phone.length === phoneLength, {
|
|
47
|
+
message: `Phone must be a string consisting of ${phoneLength} numbers. For example: 4153245540`,
|
|
48
|
+
})
|
|
49
|
+
.or(defaultOptionalString),
|
|
50
|
+
email: z.string().email().or(defaultOptionalString),
|
|
51
|
+
})
|
|
52
|
+
.refine(c => c.email || c.phone, { message: "Either email or phone must be present" });
|
|
53
|
+
|
|
54
|
+
export const demographicsSchema = z.object({
|
|
55
|
+
firstName: defaultNameString,
|
|
56
|
+
lastName: defaultNameString,
|
|
57
|
+
dob: defaultDateString,
|
|
58
|
+
genderAtBirth: genderAtBirthSchema,
|
|
59
|
+
personalIdentifiers: z.array(personalIdentifierSchema).optional(),
|
|
60
|
+
address: z.array(addressSchema).or(addressSchema),
|
|
61
|
+
contact: z.array(contactSchema).optional().or(contactSchema.optional()),
|
|
62
|
+
});
|
|
63
|
+
export type Demographics = z.infer<typeof demographicsSchema>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export const documentReferenceSchema = z.object({
|
|
4
|
+
id: z.string(),
|
|
5
|
+
fileName: z.string(),
|
|
6
|
+
location: z.string(),
|
|
7
|
+
description: z.string().optional(),
|
|
8
|
+
status: z.string().optional(),
|
|
9
|
+
indexed: z.string().optional(), // ISO-8601
|
|
10
|
+
mimeType: z.string().optional(),
|
|
11
|
+
size: z.number().optional(), // bytes
|
|
12
|
+
type: z
|
|
13
|
+
.object({
|
|
14
|
+
coding: z
|
|
15
|
+
.array(
|
|
16
|
+
z.object({
|
|
17
|
+
system: z.string().optional().nullable(),
|
|
18
|
+
code: z.string().optional().nullable(),
|
|
19
|
+
display: z.string().optional().nullable(),
|
|
20
|
+
})
|
|
21
|
+
)
|
|
22
|
+
.optional(),
|
|
23
|
+
text: z.string().optional(),
|
|
24
|
+
})
|
|
25
|
+
.optional(),
|
|
26
|
+
});
|
|
27
|
+
export type DocumentReference = z.infer<typeof documentReferenceSchema>;
|
|
28
|
+
|
|
29
|
+
export const documentQueryStatusSchema = z.enum(["processing", "completed", "failed"]);
|
|
30
|
+
export type DocumentQueryStatus = z.infer<typeof documentQueryStatusSchema>;
|
|
31
|
+
|
|
32
|
+
export const progressSchema = z.object({
|
|
33
|
+
status: documentQueryStatusSchema,
|
|
34
|
+
total: z.number().optional(),
|
|
35
|
+
successful: z.number().optional(),
|
|
36
|
+
errors: z.number().optional(),
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
export const documentQuerySchema = z.object({
|
|
40
|
+
download: progressSchema.optional(),
|
|
41
|
+
convert: progressSchema.optional(),
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
export type DocumentQuery = z.infer<typeof documentQuerySchema>;
|
|
45
|
+
|
|
46
|
+
export const documentListSchema = z.object({
|
|
47
|
+
documents: z.array(documentReferenceSchema),
|
|
48
|
+
});
|
|
49
|
+
export type DocumentList = z.infer<typeof documentListSchema>;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { addressSchema } from "./common/address";
|
|
3
|
+
import { baseUpdateSchema } from "./common/base-update";
|
|
4
|
+
import { validateNPI } from "@metriport/commonwell-sdk/common/validate-npi";
|
|
5
|
+
|
|
6
|
+
export const facilityCreateSchema = z.object({
|
|
7
|
+
name: z.string().min(1),
|
|
8
|
+
npi: z
|
|
9
|
+
.string()
|
|
10
|
+
.length(10)
|
|
11
|
+
.refine(npi => validateNPI(npi), { message: "NPI is not valid" }),
|
|
12
|
+
tin: z.string().optional().nullable(),
|
|
13
|
+
active: z.boolean().optional().nullable(),
|
|
14
|
+
address: addressSchema,
|
|
15
|
+
});
|
|
16
|
+
export type FacilityCreate = z.infer<typeof facilityCreateSchema>;
|
|
17
|
+
|
|
18
|
+
export const facilitySchema = facilityCreateSchema.merge(baseUpdateSchema);
|
|
19
|
+
export type Facility = z.infer<typeof facilitySchema>;
|
|
20
|
+
|
|
21
|
+
export const facilityListSchema = z.object({
|
|
22
|
+
facilities: z.array(facilitySchema),
|
|
23
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { addressSchema } from "./common/address";
|
|
3
|
+
import { baseUpdateSchema } from "./common/base-update";
|
|
4
|
+
|
|
5
|
+
export enum OrgType {
|
|
6
|
+
acuteCare = "acuteCare",
|
|
7
|
+
ambulatory = "ambulatory",
|
|
8
|
+
hospital = "hospital",
|
|
9
|
+
labSystems = "labSystems",
|
|
10
|
+
pharmacy = "pharmacy",
|
|
11
|
+
postAcuteCare = "postAcuteCare",
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const orgTypeSchema = z.nativeEnum(OrgType);
|
|
15
|
+
|
|
16
|
+
export const organizationCreateSchema = z.object({
|
|
17
|
+
name: z.string(),
|
|
18
|
+
type: orgTypeSchema,
|
|
19
|
+
location: addressSchema,
|
|
20
|
+
});
|
|
21
|
+
export type OrganizationCreate = z.infer<typeof organizationCreateSchema>;
|
|
22
|
+
|
|
23
|
+
export const organizationSchema = organizationCreateSchema.merge(baseUpdateSchema);
|
|
24
|
+
export type Organization = z.infer<typeof organizationSchema>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { baseUpdateSchema } from "./common/base-update";
|
|
3
|
+
import { demographicsSchema } from "./demographics";
|
|
4
|
+
|
|
5
|
+
export const patientCreateSchema = demographicsSchema;
|
|
6
|
+
export type PatientCreate = z.infer<typeof patientCreateSchema>;
|
|
7
|
+
|
|
8
|
+
export const patientUpdateSchema = patientCreateSchema.merge(baseUpdateSchema);
|
|
9
|
+
export type PatientUpdate = z.infer<typeof patientUpdateSchema>;
|
|
10
|
+
|
|
11
|
+
export const patientSchema = patientUpdateSchema.extend({
|
|
12
|
+
facilityIds: z.array(z.string()),
|
|
13
|
+
});
|
|
14
|
+
export type Patient = z.infer<typeof patientSchema>;
|
|
15
|
+
|
|
16
|
+
export const patientListSchema = z.object({
|
|
17
|
+
patients: z.array(patientSchema),
|
|
18
|
+
});
|
package/src/shared.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import dayjs from "dayjs";
|
|
2
|
+
import { z, ZodString } from "zod";
|
|
3
|
+
|
|
4
|
+
export const BASE_ADDRESS = "https://api.metriport.com";
|
|
5
|
+
export const BASE_ADDRESS_SANDBOX = "https://api.sandbox.metriport.com";
|
|
6
|
+
export const API_KEY_HEADER = "x-api-key";
|
|
7
|
+
export const DEFAULT_AXIOS_TIMEOUT_MILLIS = 20_000;
|
|
8
|
+
|
|
9
|
+
export const emptyStringToUndefined = (v: string | undefined | null) =>
|
|
10
|
+
v == null || v.length < 1 ? undefined : v;
|
|
11
|
+
|
|
12
|
+
export const optionalString = (zodSchema: ZodString) =>
|
|
13
|
+
zodSchema.or(z.string().optional()).transform(emptyStringToUndefined);
|
|
14
|
+
|
|
15
|
+
export function stripNonNumericChars(str: string): string {
|
|
16
|
+
return str.trim().replace(/\D/g, "");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export const ISO_DATE = "YYYY-MM-DD";
|
|
20
|
+
export const defaultString = z.string().trim();
|
|
21
|
+
export const defaultOptionalString = optionalString(defaultString);
|
|
22
|
+
export const defaultDateString = defaultString.refine(v => dayjs(v, ISO_DATE, true).isValid(), {
|
|
23
|
+
message: `Date must be a valid ISO 8601 date formatted ${ISO_DATE}. Example: 2023-05-03`,
|
|
24
|
+
});
|
|
25
|
+
export const defaultNameString = defaultString.min(1);
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "@tsconfig/recommended/tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"target": "es2020",
|
|
5
|
+
"sourceMap": true,
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true, // enables importers to jump to source
|
|
8
|
+
"emitDecoratorMetadata": true,
|
|
9
|
+
"experimentalDecorators": true,
|
|
10
|
+
// START - From @tsconfig/strictest
|
|
11
|
+
"allowUnusedLabels": false,
|
|
12
|
+
"allowUnreachableCode": false,
|
|
13
|
+
"noFallthroughCasesInSwitch": true,
|
|
14
|
+
"noImplicitOverride": true,
|
|
15
|
+
"noUnusedLocals": true,
|
|
16
|
+
"checkJs": true,
|
|
17
|
+
"exactOptionalPropertyTypes": true,
|
|
18
|
+
"noImplicitReturns": true,
|
|
19
|
+
// END - From @tsconfig/strictest
|
|
20
|
+
"outDir": "./dist"
|
|
21
|
+
},
|
|
22
|
+
"include": ["./src"],
|
|
23
|
+
"exclude": ["./dist"]
|
|
24
|
+
}
|