@tellescope/validation 1.243.0 → 1.244.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/src/validation.ts CHANGED
@@ -258,6 +258,7 @@ import {
258
258
  Pharmacy,
259
259
  FormResponseAnswerInsurance,
260
260
  FormResponseAnswerBridgeEligibility,
261
+ FormResponseAnswerCandidEligibility,
261
262
  FormResponseAnswerPharmacySearch,
262
263
  CanvasConsentCategory,
263
264
  DiagnosisTypes,
@@ -293,6 +294,7 @@ import {
293
294
  HealthieAddToCourseAutomationAction,
294
295
  LabeledField,
295
296
  HealthieSendChatAutomationAction,
297
+ HealthiePushFormsAutomationAction,
296
298
  ZusPullAutomationAction,
297
299
  FieldMapping,
298
300
  ActiveCampaignSyncAutomationAction,
@@ -341,6 +343,10 @@ import {
341
343
  MetriportSyncAutomationAction,
342
344
  AIDecisionAutomationAction,
343
345
  AssignInboxItemAutomationAction,
346
+ BelugaAutoRxAutomationAction,
347
+ BelugaAutoRxPatientPreferenceItem,
348
+ BelugaUpdateVisitAutomationAction,
349
+ BelugaUpdateVisitPatientPreferenceItem,
344
350
  OnAIDecisionAutomationEvent,
345
351
  OnErrorEventInfo,
346
352
  OnErrorAutomationEvent,
@@ -1619,6 +1625,7 @@ const _FORM_FIELD_TYPES: { [K in FormFieldType]: any } = {
1619
1625
  "Related Contacts": "",
1620
1626
  'Insurance': '',
1621
1627
  'Bridge Eligibility': '',
1628
+ 'Candid Eligibility': '',
1622
1629
  Height: '',
1623
1630
  Redirect: '',
1624
1631
  'Hidden Value': '',
@@ -1646,6 +1653,7 @@ export const FORM_FIELD_VALIDATORS_BY_TYPE: { [K in FormFieldType | 'userEmail'
1646
1653
  'Related Contacts': objectAnyFieldsAnyValuesValidator.validate(),
1647
1654
  'Insurance': objectAnyFieldsAnyValuesValidator.validate(),
1648
1655
  'Bridge Eligibility': objectAnyFieldsAnyValuesValidator.validate(),
1656
+ 'Candid Eligibility': objectAnyFieldsAnyValuesValidator.validate(),
1649
1657
  'Pharmacy Search': objectAnyFieldsAnyValuesValidator.validate(),
1650
1658
  'Address': objectAnyFieldsAnyValuesValidator.validate(),
1651
1659
  'Database Select': objectAnyFieldsAnyValuesValidator.validate(),
@@ -2039,6 +2047,15 @@ export const formResponseAnswerValidator = orValidator<{ [K in FormFieldType]: F
2039
2047
  userIds: listValidatorOptionalOrEmptyOk(mongoIdStringOptional), // Aggregated user IDs who cover the patient
2040
2048
  }, { isOptional: true, emptyOk: true }),
2041
2049
  }),
2050
+ "Candid Eligibility": objectValidator<FormResponseAnswerCandidEligibility>({
2051
+ type: exactMatchValidator(['Candid Eligibility']),
2052
+ value: objectValidator<FormResponseAnswerCandidEligibility['value']>({
2053
+ payerId: stringValidatorOptional, // Payer ID used for this eligibility check
2054
+ status: stringValidatorOptional, // Eligibility check status (COMPLETED/FAILED/PENDING)
2055
+ coverageId: stringValidatorOptional, // Candid coverage ID for polling
2056
+ benefits: optionalEmptyObjectValidator, // Benefits data from eligibility check
2057
+ }, { isOptional: true, emptyOk: true }),
2058
+ }),
2042
2059
  "Question Group": objectValidator<FormResponseAnswerGroup>({
2043
2060
  type: exactMatchValidator(['Question Group']),
2044
2061
  value: listValidatorEmptyOk(objectValidator<FormSubField>({
@@ -2544,9 +2561,12 @@ const _AUTOMATION_ACTIONS: { [K in AutomationActionType]: any } = {
2544
2561
  zusSubscribe: '',
2545
2562
  pagerDutyCreateIncident: '',
2546
2563
  smartMeterPlaceOrder: '',
2564
+ belugaAutoRx: '',
2565
+ belugaUpdateVisit: '',
2547
2566
  healthieSync: '',
2548
2567
  healthieAddToCourse: '',
2549
2568
  healthieSendChat: '',
2569
+ healthiePushForms: '',
2550
2570
  completeTickets: '',
2551
2571
  changeContactType: '',
2552
2572
  activeCampaignSync: '',
@@ -2599,6 +2619,7 @@ const sharedReminderValidators = {
2599
2619
  didRemind: booleanValidatorOptional,
2600
2620
  dontSendIfPassed: booleanValidatorOptional,
2601
2621
  dontSendIfJoined: booleanValidatorOptional,
2622
+ skipEnduserIds: listOfMongoIdStringValidatorOptionalOrEmptyOk,
2602
2623
  }
2603
2624
 
2604
2625
  export const calendarEventReminderValidator = orValidator<{ [K in CalendarEventReminderType]: CalendarEventReminderInfoForType[K] } >({
@@ -2853,10 +2874,16 @@ export const senderAssignmentStrategyValidatorOptional = orValidator<{
2853
2874
  type: exactMatchValidator<'Care Team Primary'>(['Care Team Primary']),
2854
2875
  info: objectValidator<object>({}, { emptyOk: true }),
2855
2876
  }),
2856
- 'Default': objectValidator<SenderAssignmentStrategies['Default']>({
2877
+ 'Default': objectValidator<SenderAssignmentStrategies['Default']>({
2857
2878
  type: exactMatchValidator<'Default'>(['Default']),
2858
2879
  info: objectValidator<object>({}, { emptyOk: true }),
2859
2880
  }),
2881
+ 'Care Team': objectValidator<SenderAssignmentStrategies['Care Team']>({
2882
+ type: exactMatchValidator<'Care Team'>(['Care Team']),
2883
+ info: objectValidator<SenderAssignmentStrategies['Care Team']['info']>({
2884
+ tags: listOfStringsWithQualifierValidatorOptional,
2885
+ }, { emptyOk: true }),
2886
+ }),
2860
2887
  }, { isOptional: true })
2861
2888
 
2862
2889
  export const smartMeterLinesValidator = listValidator(objectValidator<SmartMeterOrderLineItem>({
@@ -3219,13 +3246,43 @@ export const automationActionValidator = orValidator<{ [K in AutomationActionTyp
3219
3246
  shipping: stringValidator100,
3220
3247
  }),
3221
3248
  }),
3249
+ belugaAutoRx: objectValidator<BelugaAutoRxAutomationAction>({
3250
+ ...sharedAutomationActionValidators,
3251
+ type: exactMatchValidator(['belugaAutoRx']),
3252
+ info: objectValidator<BelugaAutoRxAutomationAction['info']>({
3253
+ patientPreference: objectValidator<BelugaAutoRxPatientPreferenceItem>({
3254
+ name: stringValidator,
3255
+ strength: stringValidator,
3256
+ refills: stringValidator,
3257
+ quantity: stringValidator,
3258
+ medId: stringValidator,
3259
+ }),
3260
+ pharmacyId: stringValidator,
3261
+ }),
3262
+ }),
3263
+ belugaUpdateVisit: objectValidator<BelugaUpdateVisitAutomationAction>({
3264
+ ...sharedAutomationActionValidators,
3265
+ type: exactMatchValidator(['belugaUpdateVisit']),
3266
+ info: objectValidator<BelugaUpdateVisitAutomationAction['info']>({
3267
+ patientPreferences: listValidator(objectValidator<BelugaUpdateVisitPatientPreferenceItem>({
3268
+ name: stringValidator,
3269
+ strength: stringValidator,
3270
+ refills: stringValidator,
3271
+ quantity: stringValidator,
3272
+ daysSupply: stringValidator,
3273
+ medId: stringValidator,
3274
+ })),
3275
+ pharmacyId: stringValidator,
3276
+ }),
3277
+ }),
3222
3278
  sendChat: objectValidator<SendChatAutomationAction>({
3223
3279
  ...sharedAutomationActionValidators,
3224
3280
  type: exactMatchValidator(['sendChat']),
3225
- info: objectValidator<SendChatAutomationAction['info']>({
3281
+ info: objectValidator<SendChatAutomationAction['info']>({
3226
3282
  templateId: mongoIdStringRequired,
3227
3283
  identifier: stringValidator100,
3228
3284
  includeCareTeam: booleanValidatorOptional,
3285
+ careTeamTags: listOfStringsWithQualifierValidatorOptional,
3229
3286
  userIds: listOfMongoIdStringValidatorOptionalOrEmptyOk,
3230
3287
  sendToDestinationOfRelatedContactTypes: listOfStringsValidatorOptionalOrEmptyOk,
3231
3288
  }),
@@ -3274,12 +3331,19 @@ export const automationActionValidator = orValidator<{ [K in AutomationActionTyp
3274
3331
  healthieSendChat: objectValidator<HealthieSendChatAutomationAction>({
3275
3332
  ...sharedAutomationActionValidators,
3276
3333
  type: exactMatchValidator(['healthieSendChat']),
3277
- info: objectValidator<HealthieSendChatAutomationAction['info']>({
3334
+ info: objectValidator<HealthieSendChatAutomationAction['info']>({
3278
3335
  templateId: mongoIdStringRequired,
3279
3336
  identifier: stringValidator100,
3280
3337
  includeCareTeam: booleanValidatorOptional,
3281
3338
  }),
3282
3339
  }),
3340
+ healthiePushForms: objectValidator<HealthiePushFormsAutomationAction>({
3341
+ ...sharedAutomationActionValidators,
3342
+ type: exactMatchValidator(['healthiePushForms']),
3343
+ info: objectValidator<HealthiePushFormsAutomationAction['info']>({
3344
+ formIds: listOfMongoIdStringValidator,
3345
+ }),
3346
+ }),
3283
3347
  completeTickets: objectValidator<CompleteTicketsAutomationAction>({
3284
3348
  ...sharedAutomationActionValidators,
3285
3349
  type: exactMatchValidator(['completeTickets']),
@@ -3766,6 +3830,8 @@ export const formFieldOptionsValidator = objectValidator<FormFieldOptions>({
3766
3830
  bridgeServiceTypeIds: listOfStringsValidatorOptionalOrEmptyOk,
3767
3831
  bridgeEligibilityType: exactMatchValidatorOptional(['Soft', 'Hard']),
3768
3832
  useBridgeEligibilityResult: booleanValidatorOptional,
3833
+ candidServiceCode: stringValidatorOptional,
3834
+ candidNPI: stringValidatorOptional,
3769
3835
  includeGroupNumber: booleanValidatorOptional,
3770
3836
  holdAppointmentMinutes: numberValidatorOptional,
3771
3837
  rangeStepSize: numberValidatorOptional,
@@ -3776,6 +3842,8 @@ export const formFieldOptionsValidator = objectValidator<FormFieldOptions>({
3776
3842
  saveIntakeOnPartial: booleanValidatorOptional,
3777
3843
  max: numberValidatorOptional,
3778
3844
  min: numberValidatorOptional,
3845
+ minDateOffsetMs: numberValidatorOptional,
3846
+ maxDateOffsetMs: numberValidatorOptional,
3779
3847
  stripeKey: stringValidatorOptionalEmptyOkay,
3780
3848
  stripeProductSelectionMode: booleanValidatorOptional,
3781
3849
  productConditions: listValidatorOptionalOrEmptyOk(objectValidator({
@@ -3941,10 +4009,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
3941
4009
  hideFromTable: booleanValidatorOptional,
3942
4010
  wrap: stringValidatorOptional,
3943
4011
  required: booleanValidatorOptional,
4012
+ trimStrings: booleanValidatorOptional,
3944
4013
  options: objectValidator<DatabaseRecordFields['Text']['options']>({
3945
4014
  width: stringValidatorOptionalEmptyOkay,
3946
4015
  }, { isOptional: true, emptyOk: true }),
3947
- }),
4016
+ }),
3948
4017
  Email: objectValidator<DatabaseRecordFields['Email']>({
3949
4018
  type: exactMatchValidator(['Email']),
3950
4019
  label: stringValidator250,
@@ -3952,10 +4021,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
3952
4021
  hideFromTable: booleanValidatorOptional,
3953
4022
  wrap: stringValidatorOptional,
3954
4023
  required: booleanValidatorOptional,
4024
+ trimStrings: booleanValidatorOptional,
3955
4025
  options: objectValidator<DatabaseRecordFields['Email']['options']>({
3956
4026
  width: stringValidatorOptionalEmptyOkay,
3957
4027
  }, { isOptional: true, emptyOk: true }),
3958
- }),
4028
+ }),
3959
4029
  Phone: objectValidator<DatabaseRecordFields['Phone']>({
3960
4030
  type: exactMatchValidator(['Phone']),
3961
4031
  label: stringValidator250,
@@ -3963,10 +4033,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
3963
4033
  hideFromTable: booleanValidatorOptional,
3964
4034
  wrap: stringValidatorOptional,
3965
4035
  required: booleanValidatorOptional,
4036
+ trimStrings: booleanValidatorOptional,
3966
4037
  options: objectValidator<DatabaseRecordFields['Phone']['options']>({
3967
4038
  width: stringValidatorOptionalEmptyOkay,
3968
4039
  }, { isOptional: true, emptyOk: true }),
3969
- }),
4040
+ }),
3970
4041
  'Text Long': objectValidator<DatabaseRecordFields['Text Long']>({
3971
4042
  type: exactMatchValidator(['Text Long']),
3972
4043
  label: stringValidator250,
@@ -3974,10 +4045,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
3974
4045
  hideFromTable: booleanValidatorOptional,
3975
4046
  wrap: stringValidatorOptional,
3976
4047
  required: booleanValidatorOptional,
4048
+ trimStrings: booleanValidatorOptional,
3977
4049
  options: objectValidator<DatabaseRecordFields['Text Long']['options']>({
3978
4050
  width: stringValidatorOptionalEmptyOkay,
3979
4051
  }, { isOptional: true, emptyOk: true }),
3980
- }),
4052
+ }),
3981
4053
  'Text List': objectValidator<DatabaseRecordFields['Text List']>({
3982
4054
  type: exactMatchValidator(['Text List']),
3983
4055
  label: stringValidator250,
@@ -3985,10 +4057,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
3985
4057
  hideFromTable: booleanValidatorOptional,
3986
4058
  wrap: stringValidatorOptional,
3987
4059
  required: booleanValidatorOptional,
4060
+ trimStrings: booleanValidatorOptional,
3988
4061
  options: objectValidator<DatabaseRecordFields['Text List']['options']>({
3989
4062
  width: stringValidatorOptionalEmptyOkay,
3990
4063
  }, { isOptional: true, emptyOk: true }),
3991
- }),
4064
+ }),
3992
4065
  'Number': objectValidator<DatabaseRecordFields['Number']>({
3993
4066
  type: exactMatchValidator(['Number']),
3994
4067
  label: stringValidator250,
@@ -3996,10 +4069,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
3996
4069
  hideFromTable: booleanValidatorOptional,
3997
4070
  wrap: stringValidatorOptional,
3998
4071
  required: booleanValidatorOptional,
4072
+ trimStrings: booleanValidatorOptional,
3999
4073
  options: objectValidator<DatabaseRecordFields['Number']['options']>({
4000
4074
  width: stringValidatorOptionalEmptyOkay,
4001
4075
  }, { isOptional: true, emptyOk: true }),
4002
- }),
4076
+ }),
4003
4077
  'Address': objectValidator<DatabaseRecordFields['Address']>({
4004
4078
  type: exactMatchValidator(['Address']),
4005
4079
  label: stringValidator250,
@@ -4007,10 +4081,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
4007
4081
  hideFromTable: booleanValidatorOptional,
4008
4082
  wrap: stringValidatorOptional,
4009
4083
  required: booleanValidatorOptional,
4084
+ trimStrings: booleanValidatorOptional,
4010
4085
  options: objectValidator<DatabaseRecordFields['Address']['options']>({
4011
4086
  width: stringValidatorOptionalEmptyOkay,
4012
4087
  }, { isOptional: true, emptyOk: true }),
4013
- }),
4088
+ }),
4014
4089
  'Multiple Select': objectValidator<DatabaseRecordFields['Multiple Select']>({
4015
4090
  type: exactMatchValidator(['Multiple Select']),
4016
4091
  label: stringValidator250,
@@ -4018,11 +4093,12 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
4018
4093
  hideFromTable: booleanValidatorOptional,
4019
4094
  wrap: stringValidatorOptional,
4020
4095
  required: booleanValidatorOptional,
4096
+ trimStrings: booleanValidatorOptional,
4021
4097
  options: objectValidator<DatabaseRecordFields['Multiple Select']['options']>({
4022
4098
  width: stringValidatorOptionalEmptyOkay,
4023
4099
  options: listOfStringsValidatorEmptyOk,
4024
4100
  }, { isOptional: true, emptyOk: true }),
4025
- }),
4101
+ }),
4026
4102
  'Dropdown': objectValidator<DatabaseRecordFields['Dropdown']>({
4027
4103
  type: exactMatchValidator(['Dropdown']),
4028
4104
  label: stringValidator250,
@@ -4030,11 +4106,12 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
4030
4106
  hideFromTable: booleanValidatorOptional,
4031
4107
  wrap: stringValidatorOptional,
4032
4108
  required: booleanValidatorOptional,
4109
+ trimStrings: booleanValidatorOptional,
4033
4110
  options: objectValidator<DatabaseRecordFields['Dropdown']['options']>({
4034
4111
  width: stringValidatorOptionalEmptyOkay,
4035
4112
  options: listOfStringsValidatorEmptyOk,
4036
4113
  }, { isOptional: true, emptyOk: true }),
4037
- }),
4114
+ }),
4038
4115
  'Timestamp': objectValidator<DatabaseRecordFields['Timestamp']>({
4039
4116
  type: exactMatchValidator(['Timestamp']),
4040
4117
  label: stringValidator250,
@@ -4042,10 +4119,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
4042
4119
  hideFromTable: booleanValidatorOptional,
4043
4120
  wrap: stringValidatorOptional,
4044
4121
  required: booleanValidatorOptional,
4122
+ trimStrings: booleanValidatorOptional,
4045
4123
  options: objectValidator<DatabaseRecordFields['Timestamp']['options']>({
4046
4124
  width: stringValidatorOptionalEmptyOkay,
4047
4125
  }, { isOptional: true, emptyOk: true }),
4048
- }),
4126
+ }),
4049
4127
  'Date': objectValidator<DatabaseRecordFields['Date']>({
4050
4128
  type: exactMatchValidator(['Date']),
4051
4129
  label: stringValidator250,
@@ -4053,10 +4131,11 @@ export const databaseFieldValidator = orValidator<{ [K in DatabaseRecordFieldTyp
4053
4131
  hideFromTable: booleanValidatorOptional,
4054
4132
  wrap: stringValidatorOptional,
4055
4133
  required: booleanValidatorOptional,
4134
+ trimStrings: booleanValidatorOptional,
4056
4135
  options: objectValidator<DatabaseRecordFields['Date']['options']>({
4057
4136
  width: stringValidatorOptionalEmptyOkay,
4058
4137
  }, { isOptional: true, emptyOk: true }),
4059
- }),
4138
+ }),
4060
4139
  })
4061
4140
  export const databaseFieldsValidator = listValidator(databaseFieldValidator)
4062
4141
 
@@ -4658,6 +4737,7 @@ const _AUTOMATION_TRIGGER_EVENT_TYPES: { [K in AutomationTriggerEventType]: any
4658
4737
  "Message Opened": true,
4659
4738
  "Message Link Clicked": true,
4660
4739
  "Healthie Note Locked": true,
4740
+ "Healthie Form Answer Group Created": true,
4661
4741
  "Database Entry Added": true,
4662
4742
  "Eligibility Result Received": true,
4663
4743
  "File Added": true,
@@ -4957,7 +5037,15 @@ export const automationTriggerEventValidator = orValidator<{ [K in AutomationTri
4957
5037
  answersCondition: objectAnyFieldsAnyValuesValidator,
4958
5038
  }, { emptyOk: true }),
4959
5039
  conditions: optionalEmptyObjectValidator,
4960
- }),
5040
+ }),
5041
+ "Healthie Form Answer Group Created": objectValidator<AutomationTriggerEvents["Healthie Form Answer Group Created"]>({
5042
+ type: exactMatchValidator(['Healthie Form Answer Group Created']),
5043
+ info: objectValidator<AutomationTriggerEvents['Healthie Form Answer Group Created']['info']>({
5044
+ healthieFormIds: listOfStringsValidatorOptionalOrEmptyOk,
5045
+ answersCondition: objectAnyFieldsAnyValuesValidator,
5046
+ }, { emptyOk: true }),
5047
+ conditions: optionalEmptyObjectValidator,
5048
+ }),
4961
5049
  "Database Entry Added": objectValidator<AutomationTriggerEvents["Database Entry Added"]>({
4962
5050
  type: exactMatchValidator(['Database Entry Added']),
4963
5051
  info: objectValidator<AutomationTriggerEvents['Database Entry Added']['info']>({
@@ -6455,6 +6543,7 @@ export const formCustomizationValidator = objectValidator<Form['customization']>
6455
6543
  publicStateLabel: stringValidatorOptionalEmptyOkay,
6456
6544
  primaryColor: stringValidatorOptionalEmptyOkay, // Custom primary/accent color
6457
6545
  secondaryColor: stringValidatorOptionalEmptyOkay, // Custom secondary color
6546
+ showLogoOnIntakePage: booleanValidatorOptional,
6458
6547
  })
6459
6548
 
6460
6549
  export const languageValidator = objectValidator<Language>({