@rippling/rippling-sdk 0.2.0-alpha.68 → 0.2.0-alpha.69

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.
@@ -3,6 +3,7 @@
3
3
  * with status, treatment plans, rollups, and an SDUI ObjectListView tab for appointments.
4
4
  *
5
5
  * dental_patient__c ← chart: demographics, allergies, notes
6
+ * dental_provider__c ← providers selectable for appointments
6
7
  * dental_operatory__c ← chair / room (parent for same-day board rollups)
7
8
  * dental_appointment__c ← child of operatory; patient lookup, time, status, visit type
8
9
  * dental_treatment_plan__c ← child of patient; plan status, procedures, estimates
@@ -146,6 +147,50 @@ const patientLabelField = new FormulaField(patientObj, {
146
147
  section: patientIdentitySection,
147
148
  });
148
149
 
150
+ // ── Provider ────────────────────────────────────────────────────────────────
151
+ const providerObj = new CustomObject(manifest, {
152
+ apiName: 'dental_provider__c',
153
+ name: 'Provider',
154
+ pluralLabel: 'Providers',
155
+ category: dentalCategory,
156
+ description: 'Clinicians who can be assigned to appointment blocks',
157
+ icon: { emoji: '🧑‍⚕️' },
158
+ });
159
+
160
+ const providerSection = new CustomObjectFieldSection(providerObj, {
161
+ name: 'Provider',
162
+ sectionId: 'sec_provider_info',
163
+ });
164
+
165
+ const providerNameField = providerObj.standardFields.name;
166
+
167
+ const providerStatusField = new SelectField(providerObj, {
168
+ apiName: 'provider_status__c',
169
+ displayName: 'Status',
170
+ description: 'Whether this provider is active in the practice',
171
+ options: ['Active', 'On leave', 'Inactive'],
172
+ required: true,
173
+ section: providerSection,
174
+ });
175
+
176
+ const providerBookingStatusField = new SelectField(providerObj, {
177
+ apiName: 'booking_status__c',
178
+ displayName: 'Booking status',
179
+ description: 'Whether scheduling should offer this provider for new appointments',
180
+ options: ['Open', 'Limited', 'Closed'],
181
+ required: true,
182
+ section: providerSection,
183
+ });
184
+
185
+ const providerNextAvailableDaysField = new NumberField(providerObj, {
186
+ apiName: 'next_available_days__c',
187
+ displayName: 'Next available (days)',
188
+ description: 'Estimated days until this provider has an open appointment slot',
189
+ decimalPlaces: 0,
190
+ required: true,
191
+ section: providerSection,
192
+ });
193
+
149
194
  // ── Operatory (chair) ─────────────────────────────────────────────────────────
150
195
  const operatoryObj = new CustomObject(manifest, {
151
196
  apiName: 'dental_operatory__c',
@@ -230,6 +275,18 @@ const apptPatientRef = new LookupField(apptObj, {
230
275
  section: apptPatientSection,
231
276
  });
232
277
 
278
+ const apptProviderRef = new LookupField(apptObj, {
279
+ apiName: 'provider_ref__c',
280
+ displayName: 'Provider',
281
+ target: providerObj,
282
+ relatedDataLabel: 'Appointments',
283
+ required: true,
284
+ lookup_filter_rql_condition:
285
+ "((provider_status__c == 'Active') AND (next_available_days__c <= 14) AND (booking_status__c != 'Closed'))",
286
+ description: 'Provider assigned to this visit (active and bookable within two weeks)',
287
+ section: apptPatientSection,
288
+ });
289
+
233
290
  const apptVisitTypeField = new SelectField(apptObj, {
234
291
  apiName: 'visit_type__c',
235
292
  displayName: 'Visit type',
@@ -402,6 +459,22 @@ new ListViewDef(patientObj, {
402
459
  objectScope: 'all',
403
460
  });
404
461
 
462
+ new ListViewDef(providerObj, {
463
+ viewId: 'view_dental_providers',
464
+ name: 'All providers',
465
+ description: 'Provider directory with appointment booking fields',
466
+ fields: [
467
+ providerNameField,
468
+ providerStatusField,
469
+ providerBookingStatusField,
470
+ providerNextAvailableDaysField,
471
+ ],
472
+ orderBy: 'name',
473
+ sortOrder: 'ASC',
474
+ isPublic: true,
475
+ objectScope: 'all',
476
+ });
477
+
405
478
  new ListViewDef(operatoryObj, {
406
479
  viewId: 'view_dental_all_operatories',
407
480
  name: 'All operatories',
@@ -423,6 +496,7 @@ new ListViewDef(apptObj, {
423
496
  apptStartField,
424
497
  apptDurationMins,
425
498
  apptPatientRef,
499
+ apptProviderRef,
426
500
  apptVisitTypeField,
427
501
  apptStatusField,
428
502
  apptBoardLabel,
@@ -490,6 +564,37 @@ new CustomObjectPageLayout(patientObj, {
490
564
  visibilityConditions: {},
491
565
  });
492
566
 
567
+ new CustomObjectPageLayout(providerObj, {
568
+ apiName: 'default',
569
+ name: 'Provider',
570
+ layoutId: 'layout_dental_provider',
571
+ tabEdits: {
572
+ newTabs: [
573
+ {
574
+ key: 'provider',
575
+ name: 'Provider',
576
+ type: 'tab_with_sections',
577
+ sections: [
578
+ {
579
+ name: 'Booking',
580
+ type: 'fields_section',
581
+ section: providerSection,
582
+ fields: [
583
+ { field: providerNameField, editable: true },
584
+ providerStatusField,
585
+ providerBookingStatusField,
586
+ providerNextAvailableDaysField,
587
+ ],
588
+ },
589
+ ],
590
+ },
591
+ ],
592
+ systemTabEdits: {},
593
+ tabsOrder: ['provider'],
594
+ },
595
+ visibilityConditions: {},
596
+ });
597
+
493
598
  new CustomObjectPageLayout(operatoryObj, {
494
599
  apiName: 'default',
495
600
  name: 'Operatory',
@@ -537,7 +642,14 @@ new CustomObjectPageLayout(apptObj, {
537
642
  name: 'Patient & status',
538
643
  type: 'fields_section',
539
644
  section: apptPatientSection,
540
- fields: [apptPatientRef, apptVisitTypeField, apptStatusField, apptBoardLabel, apptClinicalNotes],
645
+ fields: [
646
+ apptPatientRef,
647
+ apptProviderRef,
648
+ apptVisitTypeField,
649
+ apptStatusField,
650
+ apptBoardLabel,
651
+ apptClinicalNotes,
652
+ ],
541
653
  },
542
654
  ],
543
655
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rippling/rippling-sdk",
3
- "version": "0.2.0-alpha.68",
3
+ "version": "0.2.0-alpha.69",
4
4
  "description": "The official TypeScript library for the Rippling SDK API",
5
5
  "author": "Rippling SDK <no-reply@rippling.com>",
6
6
  "types": "./index.d.ts",
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.2.0-alpha.68'; // x-release-please-version
1
+ export const VERSION = '0.2.0-alpha.69'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.2.0-alpha.68";
1
+ export declare const VERSION = "0.2.0-alpha.69";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.2.0-alpha.68";
1
+ export declare const VERSION = "0.2.0-alpha.69";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.2.0-alpha.68'; // x-release-please-version
4
+ exports.VERSION = '0.2.0-alpha.69'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.2.0-alpha.68'; // x-release-please-version
1
+ export const VERSION = '0.2.0-alpha.69'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map