@tellescope/schema 1.253.0 → 1.253.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/src/schema.ts CHANGED
@@ -460,6 +460,7 @@ export type ModelFieldInfo <T, R> = {
460
460
  readonly?: boolean,
461
461
  required?: boolean,
462
462
  updatesDisabled?: boolean,
463
+ enduserUpdatesDisabled?: boolean, // enduser sessions cannot update this field; user sessions still can
463
464
  examples?: JSONType[],
464
465
  initializer?: Initializer<Partial<T>, R>, // should include the required fields of T, not just partial
465
466
  dependencies?: Dependency<Partial<T>>[],
@@ -1506,13 +1507,15 @@ export const schema: SchemaV1 = build_schema({
1506
1507
  unsubscribe: {},
1507
1508
  },
1508
1509
  fields: {
1509
- ...BuiltInFields,
1510
+ ...BuiltInFields,
1511
+ sharedWithOrganizations: { ...BuiltInFields.sharedWithOrganizations, enduserUpdatesDisabled: true },
1510
1512
  recentViewers: { validator: recentViewersValidator },
1511
- healthie_dietitian_id: { validator: stringValidator100 },
1513
+ healthie_dietitian_id: { validator: stringValidator100, enduserUpdatesDisabled: true },
1512
1514
  mergedIds: { validator: listOfMongoIdStringValidatorOptionalOrEmptyOk, readonly: true, redactions: ['enduser'] },
1513
1515
  externalId: {
1514
1516
  validator: stringValidator250,
1515
1517
  examples: ['addfed3e-ddea-415b-b52b-df820c944dbb'],
1518
+ enduserUpdatesDisabled: true,
1516
1519
  },
1517
1520
  email: {
1518
1521
  validator: emailValidatorEmptyOkay,
@@ -1566,9 +1569,10 @@ export const schema: SchemaV1 = build_schema({
1566
1569
  validator: stringValidator250,
1567
1570
  redactions: ['enduser'],
1568
1571
  },
1569
- journeys: {
1572
+ journeys: {
1570
1573
  validator: journeysValidator,
1571
1574
  redactions: ['enduser'],
1575
+ enduserUpdatesDisabled: true, // endusers may still use the add_to_journey / remove_from_journey custom actions
1572
1576
  dependencies: [
1573
1577
  {
1574
1578
  dependsOn: ['journeys'],
@@ -1584,13 +1588,15 @@ export const schema: SchemaV1 = build_schema({
1584
1588
  ]
1585
1589
  },
1586
1590
  scheduledJourneys: { validator: scheduledJourneysValidator },
1587
- tags: {
1591
+ tags: {
1588
1592
  redactions: ['enduser'],
1589
1593
  validator: listOfStringsValidatorUniqueOptionalOrEmptyOkay,
1594
+ enduserUpdatesDisabled: true,
1590
1595
  },
1591
- accessTags: {
1596
+ accessTags: {
1592
1597
  redactions: ['enduser'],
1593
1598
  validator: listOfStringsValidatorEmptyOk,
1599
+ enduserUpdatesDisabled: true,
1594
1600
  },
1595
1601
  unredactedTags: {
1596
1602
  validator: listOfStringsValidatorEmptyOk,
@@ -1598,6 +1604,7 @@ export const schema: SchemaV1 = build_schema({
1598
1604
  fields: {
1599
1605
  redactions: ['enduser'],
1600
1606
  validator: fieldsValidator,
1607
+ enduserUpdatesDisabled: true, // intake forms write fields server-side; direct enduser PATCH is not a supported path
1601
1608
  },
1602
1609
  unredactedFields: {
1603
1610
  validator: fieldsValidator,
@@ -1606,17 +1613,20 @@ export const schema: SchemaV1 = build_schema({
1606
1613
  redactions: ['enduser'],
1607
1614
  validator: preferenceValidator,
1608
1615
  },
1609
- assignedTo: {
1616
+ assignedTo: {
1610
1617
  redactions: ['enduser'],
1611
1618
  validator: listOfUniqueStringsValidatorEmptyOk,
1619
+ enduserUpdatesDisabled: true,
1612
1620
  },
1613
- primaryAssignee: {
1621
+ primaryAssignee: {
1614
1622
  validator: mongoIdStringValidator,
1615
1623
  redactions: ['enduser'],
1624
+ enduserUpdatesDisabled: true,
1616
1625
  },
1617
- unread: {
1626
+ unread: {
1618
1627
  redactions: ['enduser'],
1619
1628
  validator: booleanValidator,
1629
+ enduserUpdatesDisabled: true,
1620
1630
  },
1621
1631
  lastActive: {
1622
1632
  validator: dateValidator,
@@ -1651,7 +1661,7 @@ export const schema: SchemaV1 = build_schema({
1651
1661
  pronouns: { validator: stringValidator100, redactions: ['enduser'] },
1652
1662
  height: { validator: genericUnitWithQuantityValidator, redactions: ['enduser'] },
1653
1663
  weight: { validator: genericUnitWithQuantityValidator, redactions: ['enduser'] },
1654
- source: { validator: stringValidator1000Optional },
1664
+ source: { validator: stringValidator1000Optional, enduserUpdatesDisabled: true },
1655
1665
  addressLineOne: { validator: stringValidator5000EmptyOkay, redactions: ['enduser'] },
1656
1666
  addressLineTwo: { validator: stringValidator5000EmptyOkay, redactions: ['enduser'] },
1657
1667
  city: { validator: stringValidator5000EmptyOkay, redactions: ['enduser'] },
@@ -1663,7 +1673,7 @@ export const schema: SchemaV1 = build_schema({
1663
1673
  displayName: { validator: stringValidator250 }, // intentionally not redacted for other endusers
1664
1674
  unsubscribedFromPortalChatNotifications: { validator: booleanValidator },
1665
1675
  triggeredEvents: { validator: objectAnyFieldsValidator(numberValidator) },
1666
- customTypeId: { validator: mongoIdStringValidator },
1676
+ customTypeId: { validator: mongoIdStringValidator, enduserUpdatesDisabled: true },
1667
1677
  language: { validator: languageValidator },
1668
1678
  relationships: {
1669
1679
  validator: listValidatorOptionalOrEmptyOk(objectValidator<EnduserRelationship>({
@@ -1673,10 +1683,10 @@ export const schema: SchemaV1 = build_schema({
1673
1683
  },
1674
1684
  markedReadAt: { validator: dateOptionalOrEmptyStringValidator },
1675
1685
  markedUnreadAt: { validator: dateOptionalOrEmptyStringValidator },
1676
- note: { validator: stringValidator25000EmptyOkay, redactions: ['enduser'] },
1686
+ note: { validator: stringValidator25000EmptyOkay, redactions: ['enduser'], enduserUpdatesDisabled: true },
1677
1687
  noteIsFlagged: { validator: booleanValidator },
1678
- insurance: { validator: insuranceOptionalValidator, redactions: ['enduser'] },
1679
- insuranceSecondary: { validator: insuranceOptionalValidator, redactions: ['enduser'] },
1688
+ insurance: { validator: insuranceOptionalValidator, redactions: ['enduser'], enduserUpdatesDisabled: true }, // patient insurance entry is supported via intake forms (server-side write)
1689
+ insuranceSecondary: { validator: insuranceOptionalValidator, redactions: ['enduser'], enduserUpdatesDisabled: true },
1680
1690
  bookingNotes: {
1681
1691
  validator: listValidatorOptionalOrEmptyOk(objectValidator<{ bookingPageId: string, note: string }>({
1682
1692
  bookingPageId: mongoIdStringRequired,
@@ -1694,24 +1704,25 @@ export const schema: SchemaV1 = build_schema({
1694
1704
  })),
1695
1705
  redactions: ['enduser'],
1696
1706
  },
1697
- references: { validator: listOfRelatedRecordsValidator, redactions: ['enduser'] },
1698
- athenaDepartmentId: { validator: stringValidator100, redactions: ['enduser'] },
1699
- athenaPracticeId: { validator: stringValidator100, redactions: ['enduser'] },
1700
- salesforceId: { validator: stringValidator100, redactions: ['enduser'] },
1707
+ references: { validator: listOfRelatedRecordsValidator, redactions: ['enduser'], enduserUpdatesDisabled: true },
1708
+ athenaDepartmentId: { validator: stringValidator100, redactions: ['enduser'], enduserUpdatesDisabled: true },
1709
+ athenaPracticeId: { validator: stringValidator100, redactions: ['enduser'], enduserUpdatesDisabled: true },
1710
+ salesforceId: { validator: stringValidator100, redactions: ['enduser'], enduserUpdatesDisabled: true },
1701
1711
  vitalTriggersDisabled: { validator: booleanValidator },
1702
1712
  defaultFromPhone: { validator: phoneValidator, redactions: ['enduser'] },
1703
1713
  defaultFromEmail: { validator: emailValidator, redactions: ['enduser'] },
1704
1714
  useDefaultFromEmailInAutomations: { validator: booleanValidator },
1705
1715
  useDefaultFromPhoneInAutomations: { validator: booleanValidator },
1706
- stripeCustomerId: { validator: stringValidator100, redactions: ['enduser'] },
1707
- stripeKey: { validator: stringValidator250, redactions: ['enduser'] },
1716
+ stripeCustomerId: { validator: stringValidator100, redactions: ['enduser'], enduserUpdatesDisabled: true },
1717
+ stripeKey: { validator: stringValidator250, redactions: ['enduser'], enduserUpdatesDisabled: true },
1708
1718
  diagnoses: {
1709
1719
  validator: listValidatorOptionalOrEmptyOk(enduserDiagnosisValidator),
1710
- redactions: ['enduser']
1720
+ redactions: ['enduser'],
1721
+ enduserUpdatesDisabled: true,
1711
1722
  },
1712
1723
  unsubscribedFromPhones: { validator: listOfStringsValidatorUniqueOptionalOrEmptyOkay, redactions: ['enduser'] },
1713
- lockedFromPortal: { validator: booleanValidator },
1714
- eligibleForAutoMerge: { validator: booleanValidator },
1724
+ lockedFromPortal: { validator: booleanValidator, enduserUpdatesDisabled: true },
1725
+ eligibleForAutoMerge: { validator: booleanValidator, enduserUpdatesDisabled: true },
1715
1726
  preferredPharmacy: { validator: pharmacyValidator, redactions: ['enduser'] },
1716
1727
  // recentMessagePreview: {
1717
1728
  // validator: stringValidator,
@@ -4237,6 +4248,9 @@ export const schema: SchemaV1 = build_schema({
4237
4248
  enduserId: { // deleted as side effect of enduser delete
4238
4249
  validator: mongoIdStringValidator,
4239
4250
  },
4251
+ formResponseId: { // link to the form response a file was uploaded for (used for Beluga sync)
4252
+ validator: mongoIdStringValidator,
4253
+ },
4240
4254
  secureName: {
4241
4255
  validator: stringValidator250,
4242
4256
  readonly: true,
@@ -5025,8 +5039,8 @@ export const schema: SchemaV1 = build_schema({
5025
5039
  fields: {
5026
5040
  ...BuiltInFields,
5027
5041
  discussionRoomId: { validator: mongoIdStringValidator },
5028
- hiddenFromTimeline: { validator: booleanValidator },
5029
- lockedAt: { validator: dateValidator },
5042
+ hiddenFromTimeline: { validator: booleanValidator, enduserUpdatesDisabled: true },
5043
+ lockedAt: { validator: dateValidator, enduserUpdatesDisabled: true },
5030
5044
  formId: {
5031
5045
  validator: stringValidator100, // allow other external id types here too, not just mongoid
5032
5046
  required: true,
@@ -5059,42 +5073,43 @@ export const schema: SchemaV1 = build_schema({
5059
5073
  copiedFrom: { validator: mongoIdStringOptional },
5060
5074
  copiedFromEnduserId: { validator: mongoIdStringOptional },
5061
5075
  publicSubmit: { validator: booleanValidator },
5062
- submittedBy: { validator: stringValidator250 },
5063
- submittedByIsPlaceholder: { validator: booleanValidator },
5064
- markedAsSubmitted: { validator: booleanValidator },
5076
+ submittedBy: { validator: stringValidator250, enduserUpdatesDisabled: true },
5077
+ submittedByIsPlaceholder: { validator: booleanValidator, enduserUpdatesDisabled: true },
5078
+ markedAsSubmitted: { validator: booleanValidator, enduserUpdatesDisabled: true }, // endusers submit via the submit_form_response custom action
5065
5079
  accessCode: { validator: stringValidator250 },
5066
- userEmail: { validator: emailValidator },
5067
- submittedAt: { validator: dateValidator },
5068
- formTitle: { validator: stringValidator250 },
5080
+ userEmail: { validator: emailValidator, enduserUpdatesDisabled: true },
5081
+ submittedAt: { validator: dateValidator, enduserUpdatesDisabled: true },
5082
+ formTitle: { validator: stringValidator250, enduserUpdatesDisabled: true },
5069
5083
  responses: { validator: formResponsesValidator },
5070
5084
  draftSavedAt: { validator: dateValidator },
5071
5085
  draftSavedBy: { validator: mongoIdStringValidator },
5072
5086
  hideFromEnduserPortal: { validator: booleanValidator },
5073
5087
  sharedVia: { validator: communicationsChannelValidator },
5074
- isInternalNote: { validator: booleanValidator },
5075
- pinnedAt: { validator: dateOptionalOrEmptyStringValidator },
5088
+ isInternalNote: { validator: booleanValidator, enduserUpdatesDisabled: true },
5089
+ pinnedAt: { validator: dateOptionalOrEmptyStringValidator, enduserUpdatesDisabled: true },
5076
5090
  publicIdentifier: { validator: stringValidator250 },
5077
5091
  source: { validator: stringValidator250 },
5078
5092
  externalId: { validator: stringValidator250 },
5079
5093
  rootResponseId: { validator: mongoIdStringValidator },
5080
5094
  parentResponseId: { validator: mongoIdStringValidator },
5081
- tags: { validator: listOfStringsValidatorOptionalOrEmptyOk },
5095
+ tags: { validator: listOfStringsValidatorOptionalOrEmptyOk, enduserUpdatesDisabled: true },
5082
5096
  carePlanId: { validator: mongoIdStringValidator },
5083
5097
  context: { validator: stringValidator1000 },
5084
- logoURL: { validator: stringValidator5000 },
5085
- logoHeight: { validator: numberValidator },
5098
+ logoURL: { validator: stringValidator5000, enduserUpdatesDisabled: true },
5099
+ logoHeight: { validator: numberValidator, enduserUpdatesDisabled: true },
5086
5100
  calendarEventId: { validator: mongoIdStringValidator },
5087
5101
  references: { validator: listOfRelatedRecordsValidator, readonly: true },
5088
5102
  groupId: { validator: mongoIdStringValidator },
5089
5103
  groupInstance: { validator: stringValidator100 },
5090
5104
  groupPosition: { validator: nonNegNumberValidator },
5091
5105
  hideAfterUnsubmittedInMS: { validator: numberValidator },
5092
- addenda: {
5093
- validator: listValidatorOptionalOrEmptyOk(objectValidator<Addendum>({
5106
+ addenda: {
5107
+ validator: listValidatorOptionalOrEmptyOk(objectValidator<Addendum>({
5094
5108
  text: stringValidator25000EmptyOkay,
5095
5109
  timestamp: dateValidator,
5096
5110
  userId: mongoIdStringRequired,
5097
- }))
5111
+ })),
5112
+ enduserUpdatesDisabled: true,
5098
5113
  },
5099
5114
  followups: {
5100
5115
  validator: listValidatorOptionalOrEmptyOk(objectValidator<FormResponseFollowup>({
@@ -5115,9 +5130,9 @@ export const schema: SchemaV1 = build_schema({
5115
5130
  }))
5116
5131
  },
5117
5132
  startedViaPinnedForm: { validator: booleanValidator },
5118
- enduserAISummary: { validator: stringValidator25000 },
5119
- procedureCodes: { validator: procedureCodesValidator },
5120
- diagnosisCodes: { validator: diagnosisCodesValidator },
5133
+ enduserAISummary: { validator: stringValidator25000, enduserUpdatesDisabled: true },
5134
+ procedureCodes: { validator: procedureCodesValidator, enduserUpdatesDisabled: true },
5135
+ diagnosisCodes: { validator: diagnosisCodesValidator, enduserUpdatesDisabled: true },
5121
5136
  },
5122
5137
  defaultActions: DEFAULT_OPERATIONS,
5123
5138
  enduserActions: {
@@ -7199,7 +7214,7 @@ export const schema: SchemaV1 = build_schema({
7199
7214
  type: stringValidatorOptional,
7200
7215
  }),
7201
7216
  },
7202
- onboardingStatus: { validator: stringValidator100 }, // read/write for org admins (not super-admin restricted)
7217
+ onboardingStatus: { validator: userPortalSettingsValidator }, // key-value store, same shape as User.portalSettings; read/write for org admins (not super-admin restricted)
7203
7218
  creditCount: { validator: numberValidator, readonly: true },
7204
7219
  stripeKeyDetails: {
7205
7220
  validator: listValidatorOptionalOrEmptyOk(objectValidator<StripeKeyDetail>({