canvas 0.66.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 (72) hide show
  1. {canvas-0.66.0.dist-info → canvas-0.68.0.dist-info}/METADATA +1 -1
  2. {canvas-0.66.0.dist-info → canvas-0.68.0.dist-info}/RECORD +72 -64
  3. canvas_generated/messages/effects_pb2.py +2 -2
  4. canvas_generated/messages/effects_pb2.pyi +8 -0
  5. canvas_generated/messages/events_pb2.py +2 -2
  6. canvas_generated/messages/events_pb2.pyi +2 -0
  7. canvas_sdk/effects/metadata.py +15 -1
  8. canvas_sdk/effects/note/base.py +17 -0
  9. canvas_sdk/effects/patient/__init__.py +2 -0
  10. canvas_sdk/effects/patient/base.py +8 -0
  11. canvas_sdk/effects/send_contact_verification.py +42 -0
  12. canvas_sdk/handlers/application.py +7 -7
  13. canvas_sdk/handlers/utils.py +14 -0
  14. canvas_sdk/test_utils/factories/__init__.py +25 -0
  15. canvas_sdk/test_utils/factories/claim.py +24 -0
  16. canvas_sdk/test_utils/factories/claim_diagnosis_code.py +1 -0
  17. canvas_sdk/test_utils/factories/note.py +37 -0
  18. canvas_sdk/test_utils/factories/organization.py +20 -0
  19. canvas_sdk/test_utils/factories/practicelocation.py +34 -0
  20. canvas_sdk/test_utils/factories/staff.py +111 -0
  21. canvas_sdk/v1/data/__init__.py +2 -1
  22. canvas_sdk/v1/data/allergy_intolerance.py +4 -10
  23. canvas_sdk/v1/data/appointment.py +2 -4
  24. canvas_sdk/v1/data/assessment.py +2 -12
  25. canvas_sdk/v1/data/banner_alert.py +2 -4
  26. canvas_sdk/v1/data/base.py +28 -0
  27. canvas_sdk/v1/data/billing.py +8 -11
  28. canvas_sdk/v1/data/care_team.py +4 -10
  29. canvas_sdk/v1/data/claim.py +15 -29
  30. canvas_sdk/v1/data/claim_diagnosis_code.py +2 -5
  31. canvas_sdk/v1/data/claim_line_item.py +2 -5
  32. canvas_sdk/v1/data/coding.py +19 -0
  33. canvas_sdk/v1/data/command.py +2 -4
  34. canvas_sdk/v1/data/compound_medication.py +3 -3
  35. canvas_sdk/v1/data/condition.py +2 -7
  36. canvas_sdk/v1/data/coverage.py +18 -10
  37. canvas_sdk/v1/data/detected_issue.py +4 -20
  38. canvas_sdk/v1/data/device.py +2 -14
  39. canvas_sdk/v1/data/discount.py +2 -5
  40. canvas_sdk/v1/data/encounter.py +2 -4
  41. canvas_sdk/v1/data/goal.py +2 -14
  42. canvas_sdk/v1/data/imaging.py +4 -30
  43. canvas_sdk/v1/data/immunization.py +3 -13
  44. canvas_sdk/v1/data/lab.py +9 -62
  45. canvas_sdk/v1/data/line_item_transaction.py +2 -5
  46. canvas_sdk/v1/data/medication.py +2 -7
  47. canvas_sdk/v1/data/medication_history.py +5 -15
  48. canvas_sdk/v1/data/medication_statement.py +2 -11
  49. canvas_sdk/v1/data/message.py +3 -7
  50. canvas_sdk/v1/data/note.py +11 -19
  51. canvas_sdk/v1/data/observation.py +8 -35
  52. canvas_sdk/v1/data/organization.py +5 -7
  53. canvas_sdk/v1/data/patient.py +4 -11
  54. canvas_sdk/v1/data/patient_consent.py +4 -14
  55. canvas_sdk/v1/data/payment_collection.py +2 -5
  56. canvas_sdk/v1/data/posting.py +3 -9
  57. canvas_sdk/v1/data/practicelocation.py +4 -6
  58. canvas_sdk/v1/data/protocol_override.py +2 -3
  59. canvas_sdk/v1/data/protocol_result.py +3 -3
  60. canvas_sdk/v1/data/questionnaire.py +9 -25
  61. canvas_sdk/v1/data/reason_for_visit.py +2 -6
  62. canvas_sdk/v1/data/referral.py +3 -17
  63. canvas_sdk/v1/data/staff.py +33 -25
  64. canvas_sdk/v1/data/stop_medication_event.py +2 -11
  65. canvas_sdk/v1/data/task.py +3 -7
  66. canvas_sdk/v1/data/team.py +2 -4
  67. canvas_sdk/v1/data/utils.py +5 -0
  68. plugin_runner/allowed-module-imports.json +10 -0
  69. protobufs/canvas_generated/messages/effects.proto +5 -0
  70. protobufs/canvas_generated/messages/events.proto +2 -0
  71. {canvas-0.66.0.dist-info → canvas-0.68.0.dist-info}/WHEEL +0 -0
  72. {canvas-0.66.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__ = ()
@@ -249,6 +249,9 @@
249
249
  "canvas_sdk.effects.launch_modal": [
250
250
  "LaunchModalEffect"
251
251
  ],
252
+ "canvas_sdk.effects.metadata": [
253
+ "Metadata"
254
+ ],
252
255
  "canvas_sdk.effects.note": [
253
256
  "Appointment",
254
257
  "AppointmentIdentifier",
@@ -280,6 +283,7 @@
280
283
  "PatientAddress",
281
284
  "PatientContactPoint",
282
285
  "PatientExternalIdentifier",
286
+ "PatientMetadata",
283
287
  "PatientPreferredPharmacy"
284
288
  ],
285
289
  "canvas_sdk.effects.patient.base": [
@@ -287,6 +291,7 @@
287
291
  "PatientAddress",
288
292
  "PatientContactPoint",
289
293
  "PatientExternalIdentifier",
294
+ "PatientMetadata",
290
295
  "PatientPreferredPharmacy"
291
296
  ],
292
297
  "canvas_sdk.effects.patient.create_patient_external_identifier": [
@@ -346,6 +351,9 @@
346
351
  "canvas_sdk.effects.questionnaire_result": [
347
352
  "CreateQuestionnaireResult"
348
353
  ],
354
+ "canvas_sdk.effects.send_contact_verification": [
355
+ "SendContactVerificationEffect"
356
+ ],
349
357
  "canvas_sdk.effects.send_invite": [
350
358
  "SendInviteEffect"
351
359
  ],
@@ -574,6 +582,7 @@
574
582
  "DetectedIssueEvidence",
575
583
  "Device",
576
584
  "Discount",
585
+ "EligibilitySummary",
577
586
  "Encounter",
578
587
  "Facility",
579
588
  "Goal",
@@ -752,6 +761,7 @@
752
761
  "CoverageStack",
753
762
  "CoverageState",
754
763
  "CoverageType",
764
+ "EligibilitySummary",
755
765
  "Transactor",
756
766
  "TransactorAddress",
757
767
  "TransactorCoverageType",
@@ -254,6 +254,7 @@ enum EffectType {
254
254
  PATIENT_PORTAL__APPOINTMENT_IS_RESCHEDULABLE = 2002;
255
255
  PATIENT_PORTAL__APPOINTMENT_SHOW_MEETING_LINK = 2003;
256
256
  PATIENT_PORTAL__SEND_INVITE = 2004;
257
+ PATIENT_PORTAL__SEND_CONTACT_VERIFICATION = 2013;
257
258
 
258
259
  PATIENT_PORTAL__APPOINTMENTS__SLOTS__POST_SEARCH_RESULTS = 2005;
259
260
  PATIENT_PORTAL__APPOINTMENTS__FORM_APPOINTMENT_TYPES__PRE_SEARCH_RESULTS = 2006;
@@ -285,10 +286,12 @@ enum EffectType {
285
286
 
286
287
  CREATE_APPOINTMENT = 6001;
287
288
  UPDATE_APPOINTMENT = 6014;
289
+ RESCHEDULE_APPOINTMENT = 6022;
288
290
  CANCEL_APPOINTMENT = 6015;
289
291
  CREATE_SCHEDULE_EVENT = 6002;
290
292
  UPDATE_SCHEDULE_EVENT = 6016;
291
293
  DELETE_SCHEDULE_EVENT = 6017;
294
+ RESCHEDULE_SCHEDULE_EVENT = 6023;
292
295
 
293
296
  CREATE_PATIENT = 6003;
294
297
  UPDATE_PATIENT = 6008;
@@ -323,6 +326,8 @@ enum EffectType {
323
326
 
324
327
  UPSERT_APPOINTMENT_METADATA = 6052;
325
328
 
329
+ APPOINTMENT__SLOTS__POST_SEARCH_RESULTS = 6053;
330
+
326
331
  SHOW_PANEL_SECTIONS = 6100;
327
332
 
328
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