canvas 0.67.0__py3-none-any.whl → 0.68.0__py3-none-any.whl

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.

Potentially problematic release.


This version of canvas might be problematic. Click here for more details.

Files changed (66) hide show
  1. {canvas-0.67.0.dist-info → canvas-0.68.0.dist-info}/METADATA +1 -1
  2. {canvas-0.67.0.dist-info → canvas-0.68.0.dist-info}/RECORD +66 -59
  3. canvas_generated/messages/effects_pb2.py +2 -2
  4. canvas_generated/messages/effects_pb2.pyi +6 -0
  5. canvas_generated/messages/events_pb2.py +2 -2
  6. canvas_generated/messages/events_pb2.pyi +2 -0
  7. canvas_sdk/effects/note/base.py +17 -0
  8. canvas_sdk/handlers/application.py +7 -7
  9. canvas_sdk/handlers/utils.py +14 -0
  10. canvas_sdk/test_utils/factories/__init__.py +25 -0
  11. canvas_sdk/test_utils/factories/claim.py +24 -0
  12. canvas_sdk/test_utils/factories/claim_diagnosis_code.py +1 -0
  13. canvas_sdk/test_utils/factories/note.py +37 -0
  14. canvas_sdk/test_utils/factories/organization.py +20 -0
  15. canvas_sdk/test_utils/factories/practicelocation.py +34 -0
  16. canvas_sdk/test_utils/factories/staff.py +111 -0
  17. canvas_sdk/v1/data/allergy_intolerance.py +4 -10
  18. canvas_sdk/v1/data/appointment.py +2 -4
  19. canvas_sdk/v1/data/assessment.py +2 -12
  20. canvas_sdk/v1/data/banner_alert.py +2 -4
  21. canvas_sdk/v1/data/base.py +28 -0
  22. canvas_sdk/v1/data/billing.py +8 -11
  23. canvas_sdk/v1/data/care_team.py +4 -10
  24. canvas_sdk/v1/data/claim.py +15 -29
  25. canvas_sdk/v1/data/claim_diagnosis_code.py +2 -5
  26. canvas_sdk/v1/data/claim_line_item.py +2 -5
  27. canvas_sdk/v1/data/coding.py +19 -0
  28. canvas_sdk/v1/data/command.py +2 -4
  29. canvas_sdk/v1/data/compound_medication.py +3 -3
  30. canvas_sdk/v1/data/condition.py +2 -7
  31. canvas_sdk/v1/data/coverage.py +5 -13
  32. canvas_sdk/v1/data/detected_issue.py +4 -20
  33. canvas_sdk/v1/data/device.py +2 -14
  34. canvas_sdk/v1/data/discount.py +2 -5
  35. canvas_sdk/v1/data/encounter.py +2 -4
  36. canvas_sdk/v1/data/goal.py +2 -14
  37. canvas_sdk/v1/data/imaging.py +4 -30
  38. canvas_sdk/v1/data/immunization.py +3 -13
  39. canvas_sdk/v1/data/lab.py +9 -62
  40. canvas_sdk/v1/data/line_item_transaction.py +2 -5
  41. canvas_sdk/v1/data/medication.py +2 -7
  42. canvas_sdk/v1/data/medication_history.py +5 -15
  43. canvas_sdk/v1/data/medication_statement.py +2 -11
  44. canvas_sdk/v1/data/message.py +3 -7
  45. canvas_sdk/v1/data/note.py +11 -19
  46. canvas_sdk/v1/data/observation.py +8 -35
  47. canvas_sdk/v1/data/organization.py +5 -7
  48. canvas_sdk/v1/data/patient.py +4 -11
  49. canvas_sdk/v1/data/patient_consent.py +4 -14
  50. canvas_sdk/v1/data/payment_collection.py +2 -5
  51. canvas_sdk/v1/data/posting.py +3 -9
  52. canvas_sdk/v1/data/practicelocation.py +4 -6
  53. canvas_sdk/v1/data/protocol_override.py +2 -3
  54. canvas_sdk/v1/data/protocol_result.py +3 -3
  55. canvas_sdk/v1/data/questionnaire.py +9 -25
  56. canvas_sdk/v1/data/reason_for_visit.py +2 -6
  57. canvas_sdk/v1/data/referral.py +3 -17
  58. canvas_sdk/v1/data/staff.py +33 -25
  59. canvas_sdk/v1/data/stop_medication_event.py +2 -11
  60. canvas_sdk/v1/data/task.py +3 -7
  61. canvas_sdk/v1/data/team.py +2 -4
  62. canvas_sdk/v1/data/utils.py +5 -0
  63. protobufs/canvas_generated/messages/effects.proto +4 -0
  64. protobufs/canvas_generated/messages/events.proto +2 -0
  65. {canvas-0.67.0.dist-info → canvas-0.68.0.dist-info}/WHEEL +0 -0
  66. {canvas-0.67.0.dist-info → canvas-0.68.0.dist-info}/entry_points.txt +0 -0
@@ -10,19 +10,17 @@ from canvas_sdk.v1.data.base import (
10
10
  CommittableQuerySetMixin,
11
11
  ForPatientQuerySetMixin,
12
12
  IdentifiableModel,
13
- Model,
13
+ TimestampedModel,
14
14
  ValueSetLookupByNameQuerySet,
15
15
  )
16
16
 
17
17
 
18
- class ResponseOptionSet(Model):
18
+ class ResponseOptionSet(TimestampedModel):
19
19
  """ResponseOptionSet."""
20
20
 
21
21
  class Meta:
22
22
  db_table = "canvas_sdk_data_api_responseoptionset_001"
23
23
 
24
- created = models.DateTimeField(auto_now_add=True)
25
- modified = models.DateTimeField(auto_now=True)
26
24
  status = models.CharField(max_length=2)
27
25
  name = models.CharField(max_length=255)
28
26
  code_system = models.CharField(max_length=255)
@@ -31,14 +29,12 @@ class ResponseOptionSet(Model):
31
29
  use_in_shx = models.BooleanField()
32
30
 
33
31
 
34
- class ResponseOption(Model):
32
+ class ResponseOption(TimestampedModel):
35
33
  """ResponseOption."""
36
34
 
37
35
  class Meta:
38
36
  db_table = "canvas_sdk_data_api_responseoption_001"
39
37
 
40
- created = models.DateTimeField(auto_now_add=True)
41
- modified = models.DateTimeField(auto_now=True)
42
38
  status = models.CharField(max_length=2)
43
39
  name = models.CharField(max_length=255)
44
40
  code = models.CharField(max_length=100)
@@ -50,14 +46,12 @@ class ResponseOption(Model):
50
46
  ordering = models.IntegerField()
51
47
 
52
48
 
53
- class Question(IdentifiableModel):
49
+ class Question(TimestampedModel, IdentifiableModel):
54
50
  """Question."""
55
51
 
56
52
  class Meta:
57
53
  db_table = "canvas_sdk_data_api_question_001"
58
54
 
59
- created = models.DateTimeField(auto_now_add=True)
60
- modified = models.DateTimeField(auto_now=True)
61
55
  status = models.CharField(max_length=2)
62
56
  name = models.CharField(max_length=255)
63
57
  response_option_set = models.ForeignKey(
@@ -78,7 +72,7 @@ class QuestionnaireValueSetLookupQuerySet(ValueSetLookupByNameQuerySet):
78
72
  return Q(code_system=system, code__in=codes)
79
73
 
80
74
 
81
- class Questionnaire(IdentifiableModel):
75
+ class Questionnaire(TimestampedModel, IdentifiableModel):
82
76
  """Questionnaire."""
83
77
 
84
78
  class Meta:
@@ -86,8 +80,6 @@ class Questionnaire(IdentifiableModel):
86
80
 
87
81
  objects = models.Manager.from_queryset(QuestionnaireValueSetLookupQuerySet)()
88
82
 
89
- created = models.DateTimeField(auto_now_add=True)
90
- modified = models.DateTimeField(auto_now=True)
91
83
  status = models.CharField(max_length=2)
92
84
  name = models.CharField(max_length=255)
93
85
  expected_completion_time = models.FloatField()
@@ -104,14 +96,12 @@ class Questionnaire(IdentifiableModel):
104
96
  carry_forward = models.TextField()
105
97
 
106
98
 
107
- class QuestionnaireQuestionMap(Model):
99
+ class QuestionnaireQuestionMap(TimestampedModel):
108
100
  """QuestionnaireQuestionMap."""
109
101
 
110
102
  class Meta:
111
103
  db_table = "canvas_sdk_data_api_questionnairequestionmap_001"
112
104
 
113
- created = models.DateTimeField(auto_now_add=True)
114
- modified = models.DateTimeField(auto_now=True)
115
105
  status = models.CharField(max_length=2)
116
106
  questionnaire = models.ForeignKey(Questionnaire, on_delete=models.DO_NOTHING, null=True)
117
107
  question = models.ForeignKey(Question, on_delete=models.DO_NOTHING, null=True)
@@ -126,7 +116,7 @@ class InterviewQuerySet(BaseQuerySet, ForPatientQuerySetMixin, CommittableQueryS
126
116
  InterviewManager = BaseModelManager.from_queryset(InterviewQuerySet)
127
117
 
128
118
 
129
- class Interview(IdentifiableModel):
119
+ class Interview(TimestampedModel, IdentifiableModel):
130
120
  """Interview."""
131
121
 
132
122
  class Meta:
@@ -155,31 +145,25 @@ class Interview(IdentifiableModel):
155
145
  through="v1.InterviewQuestionnaireMap",
156
146
  )
157
147
  progress_status = models.CharField(max_length=3)
158
- created = models.DateTimeField(auto_now_add=True)
159
- modified = models.DateTimeField(auto_now=True)
160
148
 
161
149
 
162
- class InterviewQuestionnaireMap(Model):
150
+ class InterviewQuestionnaireMap(TimestampedModel):
163
151
  """InterviewQuestionnaireMap."""
164
152
 
165
153
  class Meta:
166
154
  db_table = "canvas_sdk_data_api_interviewquestionnairemap_001"
167
155
 
168
- created = models.DateTimeField(auto_now_add=True)
169
- modified = models.DateTimeField(auto_now=True)
170
156
  status = models.CharField(max_length=2)
171
157
  interview = models.ForeignKey(Interview, on_delete=models.DO_NOTHING, null=True)
172
158
  questionnaire = models.ForeignKey(Questionnaire, on_delete=models.DO_NOTHING, null=True)
173
159
 
174
160
 
175
- class InterviewQuestionResponse(Model):
161
+ class InterviewQuestionResponse(TimestampedModel):
176
162
  """InterviewQuestionResponse."""
177
163
 
178
164
  class Meta:
179
165
  db_table = "canvas_sdk_data_api_interviewquestionresponse_001"
180
166
 
181
- created = models.DateTimeField(auto_now_add=True)
182
- modified = models.DateTimeField(auto_now=True)
183
167
  status = models.CharField(max_length=2)
184
168
  interview = models.ForeignKey(
185
169
  Interview, on_delete=models.DO_NOTHING, related_name="interview_responses", null=True
@@ -2,9 +2,10 @@ from django.contrib.postgres.fields import ArrayField
2
2
  from django.db import models
3
3
 
4
4
  from canvas_sdk.v1.data.base import IdentifiableModel
5
+ from canvas_sdk.v1.data.coding import Coding
5
6
 
6
7
 
7
- class ReasonForVisitSettingCoding(IdentifiableModel):
8
+ class ReasonForVisitSettingCoding(IdentifiableModel, Coding):
8
9
  """ReasonForVisitSettingCoding."""
9
10
 
10
11
  class Meta:
@@ -12,11 +13,6 @@ class ReasonForVisitSettingCoding(IdentifiableModel):
12
13
 
13
14
  objects: models.Manager["ReasonForVisitSettingCoding"]
14
15
 
15
- code = models.CharField(max_length=255)
16
- display = models.CharField(max_length=1000)
17
- system = models.CharField(max_length=255)
18
- version = models.CharField(max_length=255)
19
-
20
16
  duration = ArrayField(models.DurationField())
21
17
 
22
18
 
@@ -2,28 +2,16 @@ import json
2
2
 
3
3
  from django.db import models
4
4
 
5
- from canvas_sdk.v1.data.base import IdentifiableModel
5
+ from canvas_sdk.v1.data.base import AuditedModel, IdentifiableModel, TimestampedModel
6
6
  from canvas_sdk.v1.data.task import Task
7
7
 
8
8
 
9
- class Referral(IdentifiableModel):
9
+ class Referral(AuditedModel, IdentifiableModel):
10
10
  """Referral."""
11
11
 
12
12
  class Meta:
13
13
  db_table = "canvas_sdk_data_api_referral_001"
14
14
 
15
- created = models.DateTimeField()
16
- modified = models.DateTimeField()
17
- originator = models.ForeignKey(
18
- "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
19
- )
20
- deleted = models.BooleanField()
21
- committer = models.ForeignKey(
22
- "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
23
- )
24
- entered_in_error = models.ForeignKey(
25
- "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
26
- )
27
15
  patient = models.ForeignKey("v1.Patient", on_delete=models.DO_NOTHING)
28
16
  note = models.ForeignKey("v1.Note", on_delete=models.DO_NOTHING)
29
17
  service_provider = models.ForeignKey(
@@ -66,14 +54,12 @@ class Referral(IdentifiableModel):
66
54
  return f"Referral {self.id}"
67
55
 
68
56
 
69
- class ReferralReport(IdentifiableModel):
57
+ class ReferralReport(TimestampedModel, IdentifiableModel):
70
58
  """ReferralReport."""
71
59
 
72
60
  class Meta:
73
61
  db_table = "canvas_sdk_data_api_referralreport_001"
74
62
 
75
- created = models.DateTimeField(auto_now_add=True)
76
- modified = models.DateTimeField(auto_now=True)
77
63
  originator = models.ForeignKey(
78
64
  "v1.CanvasUser", on_delete=models.DO_NOTHING, null=True, related_name="+"
79
65
  )
@@ -5,7 +5,7 @@ from django.db import models
5
5
  from django.db.models.enums import TextChoices
6
6
  from timezone_utils.fields import TimeZoneField
7
7
 
8
- from canvas_sdk.v1.data.base import IdentifiableModel, Model
8
+ from canvas_sdk.v1.data.base import IdentifiableModel, Model, TimestampedModel
9
9
  from canvas_sdk.v1.data.common import (
10
10
  AddressState,
11
11
  AddressType,
@@ -19,7 +19,7 @@ from canvas_sdk.v1.data.common import (
19
19
  from canvas_sdk.v1.data.utils import create_key
20
20
 
21
21
 
22
- class Staff(Model):
22
+ class Staff(TimestampedModel):
23
23
  """Staff."""
24
24
 
25
25
  class Meta:
@@ -35,8 +35,6 @@ class Staff(Model):
35
35
  editable=False,
36
36
  default=create_key,
37
37
  )
38
- created = models.DateTimeField(auto_now_add=True)
39
- modified = models.DateTimeField(auto_now=True)
40
38
  prefix = models.CharField(max_length=100)
41
39
  suffix = models.CharField(max_length=100)
42
40
  first_name = models.CharField(max_length=255)
@@ -44,7 +42,7 @@ class Staff(Model):
44
42
  last_name = models.CharField(max_length=255)
45
43
  maiden_name = models.CharField(max_length=255)
46
44
  nickname = models.CharField(max_length=255)
47
- previous_names = models.JSONField()
45
+ previous_names = models.JSONField(default=list)
48
46
  birth_date = models.DateField(null=True)
49
47
  sex_at_birth = models.CharField(choices=PersonSex.choices, max_length=3)
50
48
  sexual_orientation_term = models.CharField(max_length=255)
@@ -57,14 +55,14 @@ class Staff(Model):
57
55
  cultural_ethnicity_codes = ArrayField(models.CharField(max_length=100))
58
56
  cultural_ethnicity_terms = ArrayField(models.CharField(max_length=255))
59
57
  last_known_timezone = TimeZoneField(null=True)
60
- active = models.BooleanField()
58
+ active = models.BooleanField(default=True)
61
59
  primary_practice_location = models.ForeignKey(
62
60
  "v1.PracticeLocation", on_delete=models.DO_NOTHING, null=True
63
61
  )
64
62
  npi_number = models.CharField(max_length=10)
65
63
  nadean_number = models.CharField(max_length=20)
66
64
  group_npi_number = models.CharField(max_length=10)
67
- bill_through_organization = models.BooleanField()
65
+ bill_through_organization = models.BooleanField(default=True)
68
66
  tax_id = models.CharField(max_length=25)
69
67
  tax_id_type = models.CharField(choices=TaxIDType.choices, max_length=1)
70
68
  spi_number = models.CharField(max_length=50)
@@ -72,9 +70,9 @@ class Staff(Model):
72
70
  # language = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_speakers", null=True)
73
71
  # language_secondary = models.ForeignKey('v1.Language', on_delete=models.DO_NOTHING, related_name="staff_secondary_speakers", null=True)
74
72
  personal_meeting_room_link = models.URLField(null=True)
75
- state = models.JSONField()
73
+ state = models.JSONField(default=dict, blank=True)
76
74
  user = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, null=True)
77
- schedule_column_ordering = models.IntegerField()
75
+ schedule_column_ordering = models.IntegerField(default=999)
78
76
  default_supervising_provider = models.ForeignKey(
79
77
  "v1.Staff", on_delete=models.DO_NOTHING, related_name="supervising_team", null=True
80
78
  )
@@ -135,10 +133,14 @@ class StaffContactPoint(IdentifiableModel):
135
133
 
136
134
  system = models.CharField(choices=ContactPointSystem.choices, max_length=20)
137
135
  value = models.CharField(max_length=100)
138
- use = models.CharField(choices=ContactPointUse.choices, max_length=20)
136
+ use = models.CharField(
137
+ choices=ContactPointUse.choices, max_length=20, default=ContactPointUse.HOME
138
+ )
139
139
  use_notes = models.CharField(max_length=255)
140
- rank = models.IntegerField()
141
- state = models.CharField(choices=ContactPointState.choices, max_length=20)
140
+ rank = models.IntegerField(default=1)
141
+ state = models.CharField(
142
+ choices=ContactPointState.choices, max_length=20, default=ContactPointState.ACTIVE
143
+ )
142
144
  staff = models.ForeignKey(Staff, on_delete=models.DO_NOTHING, related_name="telecom")
143
145
 
144
146
 
@@ -148,31 +150,31 @@ class StaffAddress(IdentifiableModel):
148
150
  class Meta:
149
151
  db_table = "canvas_sdk_data_api_staffaddress_001"
150
152
 
151
- line1 = models.CharField(max_length=255)
152
- line2 = models.CharField(max_length=255)
153
+ line1 = models.CharField(max_length=255, default="", blank=True)
154
+ line2 = models.CharField(max_length=255, default="", blank=True)
153
155
  city = models.CharField(max_length=255)
154
- district = models.CharField(max_length=255)
156
+ district = models.CharField(max_length=255, blank=True, default="")
155
157
  state_code = models.CharField(max_length=2)
156
158
  postal_code = models.CharField(max_length=255)
157
- use = models.CharField(choices=AddressUse.choices, max_length=10)
158
- type = models.CharField(choices=AddressType.choices, max_length=10)
159
- longitude = models.FloatField()
160
- latitude = models.FloatField()
161
- start = models.DateField()
162
- end = models.DateField()
159
+ use = models.CharField(choices=AddressUse.choices, max_length=10, default=AddressUse.HOME)
160
+ type = models.CharField(choices=AddressType.choices, max_length=10, default=AddressType.BOTH)
161
+ longitude = models.FloatField(null=True, default=None, blank=True)
162
+ latitude = models.FloatField(null=True, default=None, blank=True)
163
+ start = models.DateField(null=True, blank=True)
164
+ end = models.DateField(null=True, blank=True)
163
165
  country = models.CharField(max_length=255)
164
- state = models.CharField(choices=AddressState.choices, max_length=20)
166
+ state = models.CharField(
167
+ choices=AddressState.choices, max_length=20, default=AddressState.ACTIVE
168
+ )
165
169
  staff = models.ForeignKey(Staff, on_delete=models.DO_NOTHING, related_name="addresses")
166
170
 
167
171
 
168
- class StaffPhoto(Model):
172
+ class StaffPhoto(TimestampedModel):
169
173
  """StaffPhoto."""
170
174
 
171
175
  class Meta:
172
176
  db_table = "canvas_sdk_data_api_staffphoto_001"
173
177
 
174
- created = models.DateTimeField(auto_now_add=True)
175
- modified = models.DateTimeField(auto_now=True)
176
178
  staff = models.ForeignKey(Staff, on_delete=models.CASCADE, related_name="photos")
177
179
  url = models.CharField(
178
180
  default="https://d3hn0m4rbsz438.cloudfront.net/avatar1.png", max_length=512
@@ -185,6 +187,12 @@ class StaffRole(Model):
185
187
 
186
188
  class Meta:
187
189
  db_table = "canvas_sdk_data_api_staffrole_001"
190
+ constraints = [
191
+ models.UniqueConstraint(
192
+ fields=["staff", "internal_code"],
193
+ name="staff_internal_code_unique",
194
+ )
195
+ ]
188
196
 
189
197
  class RoleDomain(TextChoices):
190
198
  CLINICAL = "CLI", "Clinical"
@@ -1,9 +1,9 @@
1
1
  from django.db import models
2
2
 
3
- from canvas_sdk.v1.data.base import IdentifiableModel
3
+ from canvas_sdk.v1.data.base import AuditedModel, IdentifiableModel
4
4
 
5
5
 
6
- class StopMedicationEvent(IdentifiableModel):
6
+ class StopMedicationEvent(AuditedModel, IdentifiableModel):
7
7
  """StopMedicationEvent."""
8
8
 
9
9
  class Meta:
@@ -21,15 +21,6 @@ class StopMedicationEvent(IdentifiableModel):
21
21
  related_name="stopmedicationevent_set",
22
22
  null=True,
23
23
  )
24
- entered_in_error = models.ForeignKey(
25
- "v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+", null=True
26
- )
27
- committer = models.ForeignKey(
28
- "v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+", null=True
29
- )
30
- originator = models.ForeignKey("v1.CanvasUser", on_delete=models.DO_NOTHING, related_name="+")
31
- created = models.DateTimeField(auto_now_add=True)
32
- modified = models.DateTimeField(auto_now=True)
33
24
  rationale = models.CharField(max_length=1024, default="")
34
25
 
35
26
 
@@ -1,7 +1,7 @@
1
1
  from django.contrib.postgres.fields import ArrayField
2
2
  from django.db import models
3
3
 
4
- from canvas_sdk.v1.data.base import IdentifiableModel, Model
4
+ from canvas_sdk.v1.data.base import IdentifiableModel, Model, TimestampedModel
5
5
  from canvas_sdk.v1.data.common import ColorEnum, Origin
6
6
 
7
7
 
@@ -33,14 +33,12 @@ class TaskLabelModule(models.TextChoices):
33
33
  TASKS = "tasks", "Tasks"
34
34
 
35
35
 
36
- class Task(IdentifiableModel):
36
+ class Task(TimestampedModel, IdentifiableModel):
37
37
  """Task."""
38
38
 
39
39
  class Meta:
40
40
  db_table = "canvas_sdk_data_api_task_001"
41
41
 
42
- created = models.DateTimeField(auto_now_add=True)
43
- modified = models.DateTimeField(auto_now=True)
44
42
  creator = models.ForeignKey(
45
43
  "v1.Staff", on_delete=models.DO_NOTHING, related_name="creator_tasks", null=True
46
44
  )
@@ -60,14 +58,12 @@ class Task(IdentifiableModel):
60
58
  status = models.CharField(choices=TaskStatus.choices, max_length=9)
61
59
 
62
60
 
63
- class TaskComment(IdentifiableModel):
61
+ class TaskComment(TimestampedModel, IdentifiableModel):
64
62
  """TaskComment."""
65
63
 
66
64
  class Meta:
67
65
  db_table = "canvas_sdk_data_api_taskcomment_001"
68
66
 
69
- created = models.DateTimeField(auto_now_add=True)
70
- modified = models.DateTimeField(auto_now=True)
71
67
  creator = models.ForeignKey(
72
68
  "v1.Staff", on_delete=models.DO_NOTHING, related_name="comments", null=True
73
69
  )
@@ -1,7 +1,7 @@
1
1
  from django.contrib.postgres.fields import ArrayField
2
2
  from django.db import models
3
3
 
4
- from canvas_sdk.v1.data.base import IdentifiableModel
4
+ from canvas_sdk.v1.data.base import IdentifiableModel, TimestampedModel
5
5
  from canvas_sdk.v1.data.common import ContactPointState, ContactPointSystem, ContactPointUse
6
6
 
7
7
 
@@ -39,14 +39,12 @@ class TeamResponsibility(models.TextChoices):
39
39
  REVIEW_COVERAGES = "REVIEW_COVERAGES", "Review incomplete patient coverages"
40
40
 
41
41
 
42
- class Team(IdentifiableModel):
42
+ class Team(TimestampedModel, IdentifiableModel):
43
43
  """Team."""
44
44
 
45
45
  class Meta:
46
46
  db_table = "canvas_sdk_data_api_team_001"
47
47
 
48
- created = models.DateTimeField(auto_now_add=True)
49
- modified = models.DateTimeField(auto_now=True)
50
48
  name = models.CharField(max_length=200)
51
49
  responsibilities = ArrayField(
52
50
  models.CharField(choices=TeamResponsibility.choices, max_length=64)
@@ -29,4 +29,9 @@ def generate_mrn(length: int = 9, max_attempts: int = 100) -> str:
29
29
  raise RuntimeError(f"Unable to generate a unique MRN after {max_attempts} attempts")
30
30
 
31
31
 
32
+ def empty_note_body() -> list[dict[str, str]]:
33
+ """Generates an empty note body with 15 empty text elements."""
34
+ return [{"type": "text", "value": ""}] * 15
35
+
36
+
32
37
  __exports__ = ()
@@ -286,10 +286,12 @@ enum EffectType {
286
286
 
287
287
  CREATE_APPOINTMENT = 6001;
288
288
  UPDATE_APPOINTMENT = 6014;
289
+ RESCHEDULE_APPOINTMENT = 6022;
289
290
  CANCEL_APPOINTMENT = 6015;
290
291
  CREATE_SCHEDULE_EVENT = 6002;
291
292
  UPDATE_SCHEDULE_EVENT = 6016;
292
293
  DELETE_SCHEDULE_EVENT = 6017;
294
+ RESCHEDULE_SCHEDULE_EVENT = 6023;
293
295
 
294
296
  CREATE_PATIENT = 6003;
295
297
  UPDATE_PATIENT = 6008;
@@ -324,6 +326,8 @@ enum EffectType {
324
326
 
325
327
  UPSERT_APPOINTMENT_METADATA = 6052;
326
328
 
329
+ APPOINTMENT__SLOTS__POST_SEARCH_RESULTS = 6053;
330
+
327
331
  SHOW_PANEL_SECTIONS = 6100;
328
332
 
329
333
  REDIRECT_CONTEXT = 6200;
@@ -1180,6 +1180,8 @@ enum EventType {
1180
1180
 
1181
1181
  APPOINTMENT__FORM__GET_ADDITIONAL_FIELDS = 141011;
1182
1182
 
1183
+ APPOINTMENT__SLOTS__POST_SEARCH = 141012;
1184
+
1183
1185
  APPOINTMENT_METADATA_CREATED = 141100;
1184
1186
  APPOINTMENT_METADATA_UPDATED = 141111;
1185
1187