@emulates/caretalk 0.0.0-stage → 2.3.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/openapi.yaml ADDED
@@ -0,0 +1,1191 @@
1
+ openapi: 3.1.0
2
+ info:
3
+ title: CareTalk external API (Emulates subset)
4
+ description: 'Stateful mock subset of CareTalk''s `/externalapi`: client login, form definitions (GetForm),
5
+ saving patient forms, patient search and insert, states, free slots and appointments. Hand-authored
6
+ from the consumer (caretalk-client.service.ts, caretalk.types.ts, caretalk-forms.type.ts); the vendor
7
+ publishes no spec.
8
+
9
+ '
10
+ version: '1'
11
+ x-emulates-upstream:
12
+ note: Wire shapes from apps/backend/src/modules/global-services/services/caretalk/*.ts (zod schemas
13
+ and interfaces).
14
+ servers:
15
+ - url: https://api.caretalkbeta.com
16
+ security:
17
+ - bearerAuth: []
18
+ paths:
19
+ /externalapi/Auth/client-login:
20
+ post:
21
+ operationId: ClientLogin
22
+ description: Exchange the API user's credentials for a bearer token.
23
+ x-emulates:
24
+ supported: true
25
+ parity:
26
+ enabled: true
27
+ safe: true
28
+ responses:
29
+ '200':
30
+ description: Token
31
+ content:
32
+ application/json:
33
+ schema:
34
+ $ref: '#/components/schemas/AuthResponse'
35
+ '400': &id001
36
+ description: Validation failed (ASP.NET ProblemDetails)
37
+ content:
38
+ application/json:
39
+ schema:
40
+ $ref: '#/components/schemas/ProblemDetails'
41
+ '401':
42
+ description: Bad credentials
43
+ content:
44
+ application/json:
45
+ schema:
46
+ $ref: '#/components/schemas/Message'
47
+ security: []
48
+ requestBody:
49
+ required: true
50
+ content:
51
+ application/json:
52
+ schema:
53
+ $ref: '#/components/schemas/LoginBody'
54
+ /externalapi/Forms/GetForm/{formName}:
55
+ get:
56
+ operationId: GetForm
57
+ description: A form definition by name or slug (an unknown form is an empty list). With AppointmentId
58
+ / PatientId, the patient's latest saved round of it.
59
+ x-emulates:
60
+ supported: true
61
+ parity:
62
+ enabled: true
63
+ safe: true
64
+ responses:
65
+ '200':
66
+ description: Matching forms
67
+ content:
68
+ application/json:
69
+ schema:
70
+ type: array
71
+ items:
72
+ $ref: '#/components/schemas/CareTalkForm'
73
+ '401': &id002
74
+ description: 'Missing, unknown or expired bearer token (empty body, WWW-Authenticate: Bearer)'
75
+ parameters:
76
+ - name: formName
77
+ in: path
78
+ required: true
79
+ schema:
80
+ type: string
81
+ enum:
82
+ - Health History
83
+ - health-history
84
+ - AOE Questions
85
+ - aoe-questions
86
+ - unknown-form
87
+ - name: AppointmentId
88
+ in: query
89
+ required: false
90
+ schema:
91
+ type: integer
92
+ minimum: 0
93
+ maximum: 5
94
+ - name: PatientId
95
+ in: query
96
+ required: false
97
+ schema:
98
+ type: integer
99
+ minimum: 0
100
+ maximum: 5
101
+ /externalapi/Forms/SavePatientForm:
102
+ post:
103
+ operationId: SavePatientForm
104
+ description: Save a patient's answers to a form (the form-submission queue's call).
105
+ x-emulates:
106
+ supported: true
107
+ parity:
108
+ enabled: true
109
+ safe: false
110
+ responses:
111
+ '200':
112
+ description: Saved
113
+ content:
114
+ application/json:
115
+ schema:
116
+ $ref: '#/components/schemas/SaveResult'
117
+ '400': *id001
118
+ '404':
119
+ description: Unknown patient or form
120
+ content:
121
+ application/json:
122
+ schema:
123
+ $ref: '#/components/schemas/ProblemDetails'
124
+ '401': *id002
125
+ requestBody:
126
+ required: true
127
+ content:
128
+ application/json:
129
+ schema:
130
+ $ref: '#/components/schemas/FormSubmission'
131
+ parameters:
132
+ - name: patientId
133
+ in: query
134
+ required: true
135
+ schema:
136
+ type: integer
137
+ minimum: 1
138
+ maximum: 5
139
+ - name: patientAppointmentId
140
+ in: query
141
+ required: false
142
+ schema:
143
+ type: integer
144
+ minimum: 1
145
+ maximum: 5
146
+ /externalapi/Patients/SearchForPatient:
147
+ get:
148
+ operationId: SearchForPatient
149
+ description: Find a patient by name, ZIP and date of birth (any of YYYY-MM-DD, MM/DD/YYYY or ISO).
150
+ Not found is a 400.
151
+ x-emulates:
152
+ supported: true
153
+ parity:
154
+ enabled: true
155
+ safe: true
156
+ responses:
157
+ '200':
158
+ description: Found
159
+ content:
160
+ application/json:
161
+ schema:
162
+ $ref: '#/components/schemas/SearchResult'
163
+ '400':
164
+ description: Not found
165
+ content:
166
+ application/json:
167
+ schema:
168
+ $ref: '#/components/schemas/SearchMiss'
169
+ '401': *id002
170
+ parameters:
171
+ - name: FirstName
172
+ in: query
173
+ required: true
174
+ schema:
175
+ type: string
176
+ enum:
177
+ - Ada
178
+ - Grace
179
+ - name: LastName
180
+ in: query
181
+ required: true
182
+ schema:
183
+ type: string
184
+ enum:
185
+ - Lovelace
186
+ - Hopper
187
+ - name: zipCode
188
+ in: query
189
+ required: true
190
+ schema:
191
+ type: string
192
+ enum:
193
+ - '84101'
194
+ - '10001'
195
+ - name: DateOfBirth
196
+ in: query
197
+ required: true
198
+ schema:
199
+ type: string
200
+ enum:
201
+ - '1985-12-10'
202
+ - 12/10/1985
203
+ - '1990-01-02'
204
+ /externalapi/States:
205
+ get:
206
+ operationId: ListStates
207
+ description: Every US state CareTalk licenses in.
208
+ x-emulates:
209
+ supported: true
210
+ parity:
211
+ enabled: true
212
+ safe: true
213
+ responses:
214
+ '200':
215
+ description: States
216
+ content:
217
+ application/json:
218
+ schema:
219
+ type: array
220
+ items:
221
+ $ref: '#/components/schemas/State'
222
+ '401': *id002
223
+ /externalapi/Patients:
224
+ post:
225
+ operationId: InsertPatient
226
+ description: Create a patient (the account backfill).
227
+ x-emulates:
228
+ supported: true
229
+ parity:
230
+ enabled: true
231
+ safe: false
232
+ responses:
233
+ '200':
234
+ description: The patient
235
+ content:
236
+ application/json:
237
+ schema:
238
+ $ref: '#/components/schemas/Patient'
239
+ '400': *id001
240
+ '401': *id002
241
+ requestBody:
242
+ required: true
243
+ content:
244
+ application/json:
245
+ schema:
246
+ $ref: '#/components/schemas/PatientBody'
247
+ /externalapi/PatientAppointments/GetFreeSlots:
248
+ get:
249
+ operationId: GetFreeSlots
250
+ description: Open slots on a date.
251
+ x-emulates:
252
+ supported: true
253
+ parity:
254
+ enabled: true
255
+ safe: true
256
+ responses:
257
+ '200':
258
+ description: Slots
259
+ content:
260
+ application/json:
261
+ schema:
262
+ type: array
263
+ items:
264
+ $ref: '#/components/schemas/FreeSlot'
265
+ '400': *id001
266
+ '401': *id002
267
+ parameters:
268
+ - name: date
269
+ in: query
270
+ required: true
271
+ schema:
272
+ type: string
273
+ enum:
274
+ - '2026-10-05'
275
+ - '2026-10-06'
276
+ - name: programId
277
+ in: query
278
+ required: true
279
+ schema:
280
+ type: integer
281
+ enum:
282
+ - 21
283
+ - name: eligibleId
284
+ in: query
285
+ required: true
286
+ schema:
287
+ type: integer
288
+ minimum: 1
289
+ maximum: 5
290
+ /externalapi/PatientAppointments:
291
+ post:
292
+ operationId: ScheduleAppointment
293
+ description: Book a slot for an eligible patient.
294
+ x-emulates:
295
+ supported: true
296
+ parity:
297
+ enabled: true
298
+ safe: false
299
+ responses:
300
+ '200':
301
+ description: Booked
302
+ content:
303
+ application/json:
304
+ schema:
305
+ $ref: '#/components/schemas/ScheduledAppointment'
306
+ '400': *id001
307
+ '401': *id002
308
+ requestBody:
309
+ required: true
310
+ content:
311
+ application/json:
312
+ schema:
313
+ $ref: '#/components/schemas/ScheduleBody'
314
+ /externalapi/PatientAppointments/GetPatientAppointmentsByEligibleId/{eligibleId}:
315
+ get:
316
+ operationId: GetPatientAppointments
317
+ description: A patient's appointments.
318
+ x-emulates:
319
+ supported: true
320
+ parity:
321
+ enabled: true
322
+ safe: true
323
+ responses:
324
+ '200':
325
+ description: Appointments
326
+ content:
327
+ application/json:
328
+ schema:
329
+ type: array
330
+ items:
331
+ $ref: '#/components/schemas/Appointment'
332
+ '401': *id002
333
+ parameters:
334
+ - name: eligibleId
335
+ in: path
336
+ required: true
337
+ schema:
338
+ type: integer
339
+ minimum: 1
340
+ maximum: 5
341
+ components:
342
+ securitySchemes:
343
+ bearerAuth:
344
+ type: http
345
+ scheme: bearer
346
+ schemas:
347
+ LoginBody:
348
+ type: object
349
+ required:
350
+ - userName
351
+ - password
352
+ properties:
353
+ userName:
354
+ type: string
355
+ minLength: 1
356
+ maxLength: 64
357
+ password:
358
+ type: string
359
+ minLength: 1
360
+ maxLength: 64
361
+ AuthResponse:
362
+ type: object
363
+ required:
364
+ - token
365
+ properties:
366
+ token:
367
+ type: string
368
+ x-emulates-volatile:
369
+ kind: token
370
+ expiration: &id003
371
+ type: string
372
+ x-emulates-volatile:
373
+ kind: timestamp
374
+ Message:
375
+ type: object
376
+ required:
377
+ - message
378
+ properties:
379
+ message:
380
+ type: string
381
+ ProblemDetails:
382
+ type: object
383
+ required:
384
+ - title
385
+ - status
386
+ properties:
387
+ type:
388
+ type: string
389
+ title:
390
+ type: string
391
+ status:
392
+ type: integer
393
+ errors:
394
+ type: object
395
+ additionalProperties:
396
+ type: array
397
+ items:
398
+ type: string
399
+ traceId:
400
+ type: string
401
+ x-emulates-volatile:
402
+ kind: opaque
403
+ QuestionAnswer:
404
+ type: object
405
+ required:
406
+ - id
407
+ - answer
408
+ - questionId
409
+ - isChecked
410
+ - createdAt
411
+ properties:
412
+ id:
413
+ type: integer
414
+ answer:
415
+ type: string
416
+ freeAnswerText:
417
+ type:
418
+ - string
419
+ - 'null'
420
+ questionId:
421
+ type: integer
422
+ complexity:
423
+ type:
424
+ - integer
425
+ - 'null'
426
+ isChecked:
427
+ type: boolean
428
+ updatedAt:
429
+ type:
430
+ - string
431
+ - 'null'
432
+ createdAt:
433
+ type: string
434
+ deletedAt:
435
+ type:
436
+ - string
437
+ - 'null'
438
+ description:
439
+ type:
440
+ - string
441
+ - 'null'
442
+ Question:
443
+ type: object
444
+ required:
445
+ - id
446
+ - questionText
447
+ - groupId
448
+ - answerTypeId
449
+ - questionAnswers
450
+ properties:
451
+ id:
452
+ type: integer
453
+ questionText:
454
+ type: string
455
+ groupId:
456
+ type: integer
457
+ sectionId:
458
+ type:
459
+ - integer
460
+ - 'null'
461
+ answerTypeId:
462
+ type: integer
463
+ enum:
464
+ - 1
465
+ - 2
466
+ - 3
467
+ - 4
468
+ - 5
469
+ alignment:
470
+ type:
471
+ - integer
472
+ - 'null'
473
+ answerText:
474
+ type:
475
+ - string
476
+ - 'null'
477
+ answerComplexity:
478
+ type: integer
479
+ questionOrder:
480
+ type:
481
+ - integer
482
+ - 'null'
483
+ isMainQuestion:
484
+ type: boolean
485
+ isTrueFalseQuestion:
486
+ type:
487
+ - boolean
488
+ - 'null'
489
+ updatedAt:
490
+ type: string
491
+ createdAt:
492
+ type: string
493
+ deletedAt:
494
+ type:
495
+ - string
496
+ - 'null'
497
+ tfValue:
498
+ type:
499
+ - boolean
500
+ - 'null'
501
+ caption:
502
+ type:
503
+ - string
504
+ - 'null'
505
+ questionAnswers:
506
+ type: array
507
+ items:
508
+ $ref: '#/components/schemas/QuestionAnswer'
509
+ FormGroup:
510
+ type: object
511
+ required:
512
+ - id
513
+ - name
514
+ - formId
515
+ - groupQuestions
516
+ - subGroups
517
+ properties:
518
+ id:
519
+ type: integer
520
+ name:
521
+ type: string
522
+ formId:
523
+ type: integer
524
+ parentGroupId:
525
+ type:
526
+ - integer
527
+ - 'null'
528
+ updatedAt:
529
+ type:
530
+ - string
531
+ - 'null'
532
+ createdAt:
533
+ type: string
534
+ deletedAt:
535
+ type:
536
+ - string
537
+ - 'null'
538
+ description:
539
+ type:
540
+ - string
541
+ - 'null'
542
+ caption:
543
+ type:
544
+ - string
545
+ - 'null'
546
+ groupQuestions:
547
+ type: array
548
+ items:
549
+ type: object
550
+ required:
551
+ - questionId
552
+ - groupId
553
+ - question
554
+ properties:
555
+ questionId:
556
+ type: integer
557
+ groupId:
558
+ type: integer
559
+ question:
560
+ $ref: '#/components/schemas/Question'
561
+ questionOrder:
562
+ type:
563
+ - integer
564
+ - 'null'
565
+ mainQuestion:
566
+ type:
567
+ - object
568
+ - 'null'
569
+ subGroups:
570
+ type: array
571
+ items:
572
+ type: object
573
+ CareTalkForm:
574
+ type: object
575
+ required:
576
+ - formRoundId
577
+ - patientAppointmentId
578
+ - submitDate
579
+ - fullFormDto
580
+ properties:
581
+ formRoundId:
582
+ type: integer
583
+ patientAppointmentId:
584
+ type:
585
+ - integer
586
+ - 'null'
587
+ submitDate: &id004
588
+ type:
589
+ - string
590
+ - 'null'
591
+ x-emulates-volatile:
592
+ kind: timestamp
593
+ fullFormDto:
594
+ type: object
595
+ required:
596
+ - id
597
+ - name
598
+ - isAllowMultible
599
+ - slug
600
+ - groups
601
+ properties:
602
+ id:
603
+ type: integer
604
+ name:
605
+ type: string
606
+ isAllowMultible:
607
+ type: boolean
608
+ slug:
609
+ type: string
610
+ description:
611
+ type:
612
+ - string
613
+ - 'null'
614
+ updatedAt:
615
+ type: string
616
+ createdAt:
617
+ type: string
618
+ deletedAt:
619
+ type:
620
+ - string
621
+ - 'null'
622
+ groups:
623
+ type: array
624
+ items:
625
+ $ref: '#/components/schemas/FormGroup'
626
+ FormSubmission:
627
+ type: object
628
+ required:
629
+ - fullFormDto
630
+ properties:
631
+ fullFormDto:
632
+ type: object
633
+ required:
634
+ - id
635
+ - name
636
+ - groups
637
+ properties:
638
+ id:
639
+ type: integer
640
+ minimum: 1
641
+ examples:
642
+ - 101
643
+ - 102
644
+ name:
645
+ type: string
646
+ minLength: 1
647
+ maxLength: 80
648
+ groups:
649
+ type: array
650
+ maxItems: 2
651
+ items:
652
+ type: object
653
+ required:
654
+ - groupQuestions
655
+ properties:
656
+ groupQuestions:
657
+ type: array
658
+ maxItems: 3
659
+ items:
660
+ type: object
661
+ required:
662
+ - questionId
663
+ - question
664
+ properties:
665
+ questionId:
666
+ type: integer
667
+ minimum: 0
668
+ examples:
669
+ - 1001
670
+ - 1002
671
+ - 1003
672
+ - 1101
673
+ question:
674
+ type: object
675
+ required:
676
+ - id
677
+ - questionAnswers
678
+ properties:
679
+ id:
680
+ type: integer
681
+ minimum: 0
682
+ examples:
683
+ - 1001
684
+ - 1002
685
+ - 1003
686
+ - 1101
687
+ questionAnswers:
688
+ type: array
689
+ maxItems: 2
690
+ items:
691
+ type: object
692
+ required:
693
+ - id
694
+ - answer
695
+ properties:
696
+ id:
697
+ type: integer
698
+ minimum: 0
699
+ examples:
700
+ - 0
701
+ - 5001
702
+ - 5002
703
+ - 5003
704
+ - 5101
705
+ answer:
706
+ type: string
707
+ minLength: 1
708
+ maxLength: 40
709
+ freeAnswerText:
710
+ type: string
711
+ maxLength: 200
712
+ SaveResult:
713
+ type: object
714
+ required:
715
+ - success
716
+ properties:
717
+ success:
718
+ type: boolean
719
+ message:
720
+ type: string
721
+ SearchResult:
722
+ type: object
723
+ required:
724
+ - isExists
725
+ - eligibleId
726
+ - programId
727
+ properties:
728
+ isExists:
729
+ type: boolean
730
+ eligibleId:
731
+ type: integer
732
+ programId:
733
+ type: integer
734
+ SearchMiss:
735
+ type: object
736
+ required:
737
+ - isExists
738
+ - message
739
+ properties:
740
+ isExists:
741
+ type: boolean
742
+ message:
743
+ type: string
744
+ State:
745
+ type: object
746
+ required:
747
+ - id
748
+ - stateUid
749
+ - name
750
+ - abbreviation
751
+ properties:
752
+ id:
753
+ type: integer
754
+ stateUid:
755
+ type: string
756
+ name:
757
+ type: string
758
+ abbreviation:
759
+ type: string
760
+ physiciansStateLicenseds:
761
+ type: array
762
+ users:
763
+ type: array
764
+ stateLocationCapabilities:
765
+ type: array
766
+ PatientBody:
767
+ type: object
768
+ required:
769
+ - dateOfBirth
770
+ - programId
771
+ - recordStatus
772
+ - recordId
773
+ - height
774
+ - weight
775
+ - highBloodPressure
776
+ - lowBloodPressure
777
+ - dateFinalized
778
+ - tokenDate
779
+ properties:
780
+ firstName:
781
+ type: string
782
+ examples:
783
+ - Ada
784
+ - Grace
785
+ maxLength: 80
786
+ lastName:
787
+ type: string
788
+ examples:
789
+ - Lovelace
790
+ - Hopper
791
+ maxLength: 80
792
+ mobilePhone:
793
+ type: string
794
+ maxLength: 20
795
+ email:
796
+ type: string
797
+ maxLength: 80
798
+ dateOfBirth:
799
+ type: string
800
+ examples:
801
+ - '1985-12-10T00:00:00.000Z'
802
+ - '1990-01-02T00:00:00.000Z'
803
+ maxLength: 80
804
+ gender:
805
+ type: integer
806
+ examples:
807
+ - 0
808
+ - 1
809
+ - 2
810
+ address:
811
+ type: string
812
+ maxLength: 80
813
+ state:
814
+ type: string
815
+ examples:
816
+ - UT
817
+ - NY
818
+ maxLength: 80
819
+ city:
820
+ type: string
821
+ maxLength: 40
822
+ userStateId:
823
+ type: integer
824
+ minimum: 1
825
+ maximum: 51
826
+ programId:
827
+ type: integer
828
+ examples:
829
+ - 21
830
+ zipCode:
831
+ type: string
832
+ examples:
833
+ - '84101'
834
+ - '10001'
835
+ maxLength: 80
836
+ height:
837
+ type: number
838
+ minimum: 0
839
+ maximum: 100
840
+ weight:
841
+ type: number
842
+ minimum: 0
843
+ maximum: 500
844
+ highBloodPressure:
845
+ type: number
846
+ minimum: 0
847
+ maximum: 250
848
+ lowBloodPressure:
849
+ type: number
850
+ minimum: 0
851
+ maximum: 200
852
+ recordStatus:
853
+ type: string
854
+ examples:
855
+ - Active
856
+ - Finalized
857
+ maxLength: 80
858
+ recordId:
859
+ type: string
860
+ examples:
861
+ - GV-001
862
+ - GV-1234
863
+ maxLength: 20
864
+ dateFinalized:
865
+ type: string
866
+ examples:
867
+ - '2026-09-20T00:00:00.000Z'
868
+ maxLength: 80
869
+ tokenDate:
870
+ type: string
871
+ examples:
872
+ - '2026-09-20T00:00:00.000Z'
873
+ maxLength: 80
874
+ Patient:
875
+ type: object
876
+ required:
877
+ - id
878
+ - programId
879
+ - recordStatus
880
+ - clientId
881
+ - createdAt
882
+ properties:
883
+ id:
884
+ type: integer
885
+ firstName:
886
+ type:
887
+ - string
888
+ - 'null'
889
+ middleInitial:
890
+ type:
891
+ - string
892
+ - 'null'
893
+ lastName:
894
+ type:
895
+ - string
896
+ - 'null'
897
+ mobilePhone:
898
+ type:
899
+ - string
900
+ - 'null'
901
+ homePhone:
902
+ type:
903
+ - string
904
+ - 'null'
905
+ token:
906
+ type:
907
+ - string
908
+ - 'null'
909
+ tokenDate:
910
+ type:
911
+ - string
912
+ - 'null'
913
+ apptStatus:
914
+ type:
915
+ - string
916
+ - 'null'
917
+ email:
918
+ type:
919
+ - string
920
+ - 'null'
921
+ dateOfBirth:
922
+ type:
923
+ - string
924
+ - 'null'
925
+ gender:
926
+ type:
927
+ - integer
928
+ - 'null'
929
+ address:
930
+ type:
931
+ - string
932
+ - 'null'
933
+ state:
934
+ type:
935
+ - string
936
+ - 'null'
937
+ city:
938
+ type:
939
+ - string
940
+ - 'null'
941
+ userStateId:
942
+ type:
943
+ - integer
944
+ - 'null'
945
+ userState:
946
+ type:
947
+ - string
948
+ - 'null'
949
+ zipCode:
950
+ type:
951
+ - string
952
+ - 'null'
953
+ recordStatus:
954
+ type: string
955
+ clientStatus:
956
+ type:
957
+ - string
958
+ - 'null'
959
+ clientBatchId:
960
+ type:
961
+ - string
962
+ - 'null'
963
+ authorization:
964
+ type:
965
+ - boolean
966
+ - 'null'
967
+ mbi:
968
+ type:
969
+ - string
970
+ - 'null'
971
+ ssn:
972
+ type:
973
+ - string
974
+ - 'null'
975
+ mspPatientId:
976
+ type:
977
+ - string
978
+ - 'null'
979
+ recordId:
980
+ type:
981
+ - string
982
+ - 'null'
983
+ height:
984
+ type:
985
+ - number
986
+ - 'null'
987
+ weight:
988
+ type:
989
+ - number
990
+ - 'null'
991
+ highBloodPressure:
992
+ type:
993
+ - number
994
+ - 'null'
995
+ lowBloodPressure:
996
+ type:
997
+ - number
998
+ - 'null'
999
+ dateFinalized:
1000
+ type:
1001
+ - string
1002
+ - 'null'
1003
+ programId:
1004
+ type: integer
1005
+ eligibilityId:
1006
+ type:
1007
+ - integer
1008
+ - 'null'
1009
+ clientId:
1010
+ type: integer
1011
+ fileId:
1012
+ type:
1013
+ - integer
1014
+ - 'null'
1015
+ oldId:
1016
+ type:
1017
+ - integer
1018
+ - 'null'
1019
+ formattedUserMobile:
1020
+ type:
1021
+ - string
1022
+ - 'null'
1023
+ planName:
1024
+ type:
1025
+ - string
1026
+ - 'null'
1027
+ healthGorillaId:
1028
+ type:
1029
+ - string
1030
+ - 'null'
1031
+ hG_P360_Retrieve_location:
1032
+ type:
1033
+ - string
1034
+ - 'null'
1035
+ hG_P360_Retrieve_Status:
1036
+ type:
1037
+ - string
1038
+ - 'null'
1039
+ hG_P360_Retrieve_json:
1040
+ type:
1041
+ - string
1042
+ - 'null'
1043
+ program:
1044
+ type:
1045
+ - string
1046
+ - 'null'
1047
+ client:
1048
+ type:
1049
+ - string
1050
+ - 'null'
1051
+ patientMedications:
1052
+ type:
1053
+ - array
1054
+ - 'null'
1055
+ patientDiagnostics:
1056
+ type:
1057
+ - array
1058
+ - 'null'
1059
+ patientAppointments:
1060
+ type:
1061
+ - array
1062
+ - 'null'
1063
+ patientAppointment: {}
1064
+ formRounds:
1065
+ type:
1066
+ - array
1067
+ - 'null'
1068
+ createdAt: *id003
1069
+ updatedAt: *id004
1070
+ deletedAt:
1071
+ type:
1072
+ - string
1073
+ - 'null'
1074
+ FreeSlot:
1075
+ type: object
1076
+ required:
1077
+ - id
1078
+ - doctorId
1079
+ - doctorName
1080
+ - timeZone
1081
+ - from
1082
+ - to
1083
+ properties:
1084
+ id:
1085
+ type: integer
1086
+ medicalSpecialty:
1087
+ type:
1088
+ - string
1089
+ - 'null'
1090
+ doctorId:
1091
+ type: integer
1092
+ doctorName:
1093
+ type: string
1094
+ doctor:
1095
+ type:
1096
+ - string
1097
+ - 'null'
1098
+ doctorUid:
1099
+ type:
1100
+ - integer
1101
+ - 'null'
1102
+ timeZone:
1103
+ type: string
1104
+ offset:
1105
+ type:
1106
+ - number
1107
+ - 'null'
1108
+ from:
1109
+ type: string
1110
+ to:
1111
+ type: string
1112
+ ScheduleBody:
1113
+ type: object
1114
+ required:
1115
+ - doctorId
1116
+ - patientId
1117
+ - from
1118
+ - to
1119
+ properties:
1120
+ doctorId:
1121
+ type: integer
1122
+ minimum: 1
1123
+ examples:
1124
+ - 7
1125
+ - 8
1126
+ patientId:
1127
+ type: integer
1128
+ minimum: 1
1129
+ maximum: 5
1130
+ from:
1131
+ type: string
1132
+ examples:
1133
+ - '2026-10-05T09:00:00'
1134
+ - '2026-10-05T10:00:00'
1135
+ maxLength: 40
1136
+ minLength: 10
1137
+ to:
1138
+ type: string
1139
+ examples:
1140
+ - '2026-10-05T09:30:00'
1141
+ - '2026-10-05T10:30:00'
1142
+ maxLength: 40
1143
+ minLength: 10
1144
+ ScheduledAppointment:
1145
+ type: object
1146
+ required:
1147
+ - id
1148
+ - patientId
1149
+ - eligibilityId
1150
+ - appointmentStatus
1151
+ - physicianId
1152
+ properties:
1153
+ id:
1154
+ type: integer
1155
+ patientId:
1156
+ type: 'null'
1157
+ eligibilityId:
1158
+ type: integer
1159
+ appointmentStatus:
1160
+ type: integer
1161
+ physicianId:
1162
+ type: integer
1163
+ Appointment:
1164
+ type: object
1165
+ required:
1166
+ - id
1167
+ - patientId
1168
+ - eligibilityId
1169
+ - createdAt
1170
+ - appointmentStatus
1171
+ - physicianId
1172
+ - startDateTime
1173
+ - endDateTime
1174
+ properties:
1175
+ id:
1176
+ type: integer
1177
+ patientId:
1178
+ type:
1179
+ - integer
1180
+ - 'null'
1181
+ eligibilityId:
1182
+ type: integer
1183
+ createdAt: *id003
1184
+ appointmentStatus:
1185
+ type: integer
1186
+ physicianId:
1187
+ type: integer
1188
+ startDateTime:
1189
+ type: string
1190
+ endDateTime:
1191
+ type: string